Я изучаю класс и функцию друга.Я хочу, чтобы функция eat () из класса Farm имела доступ к переменной цене из класса Bull и изменила значение цены.Поэтому мне нужно реализовать функцию друга.У меня проблема с использованием функции, так как я не понимаю, как ее использовать.Я получил эти ошибки:
gcc friendFClass.cc -lstdc++ -o friendFClass
friendFClass.cc: In member function 'void Farm::eat(Bull)':
friendFClass.cc:43: error: 'class Bull' has no member named 'eat'
friendFClass.cc: In function 'int main()':
friendFClass.cc:54: error: 'class Bull' has no member named 'eat'
для этой программы:
#include <iostream>
class Bull; // declaration not full of Bull
class Farm { // declaration full of Farm
double sizeFarm;
double massBull;
public:
void eat(Bull eatingBull); // Ok Bull was declared
void init(double size, double mass) {
this -> sizeFarm = size;
this -> massBull = mass;
}
void print() {
std::cout << "size of the Farm: " << sizeFarm << "\nmass of a bull: " << massBull << std::endl;
}
};
class Bull {
int eatBullThisMonth;
int price;
friend void Farm::eat(Bull eatingBull); // Ok Farm was full deblared
public:
void init(int price) {
this -> price = price;
}
void print() {
std::cout << "Number of bull for the month: " << eatBullThisMonth << std::endl;
std::cout << "Total price : " << price << std::endl;
}
};
void Farm::eat(Bull eatingBull) {
int pPrice = 12 * eatingBull.price;
eatingBull.eat(pPrice);
eatingBull.print();
}
int main() {
Farm delacroix;
Bull marguerite;
delacroix.init(1260, 123);
marguerite.init(159);
marguerite.eat();
return 0;
}
Я не знаю, где определить функцию друга, внутри или снаружи фермы классов и как ее определить.
Спасибо.