я написал этот код, но функция друга не работает (foodmoney и hobbymoney не объявляются в функции моего друга. где моя ошибка здесь?
#include <iostream>
using namespace std;
class myBase
{
private:
int friendvar;
int foodmoney;
int hobbymoney;
public:
void setdata();
myBase(){friendvar=0;}
friend void caldata(myBase &mbo);
};
void myBase::setdata()
{
cout<<"Enter foodmoney :" ;cin>>foodmoney;
cout<<"enter hoobymoney:";cin>>hobbymoney;
}
void caldata(myBase &mbo)
{
mbo.friendvar=(foodmoney+hobbymoney)/2;
cout<<mbo.friendvar<<endl;
}
int main()
{
myBase baseobj;
baseobj.setdata();
myBase friends;
caldata(friends);
return 0;
}
mbo.friendvar=(foodmoney+hobbymoney);
должно быть
mbo.friendvar=(mbo.foodmoney+mbo.hobbymoney);
и т. д.
Функции друзей не функции-члены, поэтому они не имеют специального доступа к какому-либо конкретному объекту. Вы должны указать, к какому объекту вы хотите получить доступ (используя mbo
в твоем случае).
Сказав, что я не вижу веских причин, почему Caldata является функцией друга. Почему бы не сделать его обычной функцией-членом? Или, может быть, вы должны сделать это функцией друга с двумя аргументами? Трудно сказать, чего ты здесь пытаешься достичь.
менять
cin>>foodmoney;
в
cin>>mbo.foodmoney;
и изменить
cin>>hobbymoney;
в
cin>>mbo.hobbymoney;