В лабораторной по C++ не получается нормально использовать friend для перегрузки оператора сложения.
group - это класс для массива автомобилей, там всё нормально
Сокращённая версия кода работы
car.h
class Car{
friend double operator+(Car& c1, Car& c2);
private:
const char* marka; //марка авто
int power; //мощность двигателя в кВт
float cost; //стоимость в тыс. $
int displacement; //объём двигателя:
public:
operator double () {
return this->cost;
}
Car(const char* m = def_marka, int pw = def_power, float p = def_price, int dis = def_displacement){ //конструктор по умолчанию
marka = m;
power = pw;
cost = p;
displacement = dis;
};
car.cpp
Car::Car(const char* m, int pw, float p, int dis){
marka = m;
power = pw;
cost = p;
displacement = dis;
}
double operator + (Car& c1, Car& c2)
{ return (c1.cost+c2.cost); }
main.cpp
int main(){
double price = group.GetCar(0);
std::cout << price << endl;
double sum = group.GetCar(1)+group.GetCar(2);
cout << sum << endl;
return 0;
}
Ошибка при попытке создать exe файл
error C2248: 'cost' : cannot access private member declared in class 'Car'
Использую Visual C++ 6.0
UPD: дружественные функции нужно использовать по заданию