функция друга c ++ внутри класса

я написал этот код, но функция друга не работает (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;
}

-2

Решение

mbo.friendvar=(foodmoney+hobbymoney);

должно быть

mbo.friendvar=(mbo.foodmoney+mbo.hobbymoney);

и т. д.

Функции друзей не функции-члены, поэтому они не имеют специального доступа к какому-либо конкретному объекту. Вы должны указать, к какому объекту вы хотите получить доступ (используя mbo в твоем случае).

Сказав, что я не вижу веских причин, почему Caldata является функцией друга. Почему бы не сделать его обычной функцией-членом? Или, может быть, вы должны сделать это функцией друга с двумя аргументами? Трудно сказать, чего ты здесь пытаешься достичь.

3

Другие решения

менять

 cin>>foodmoney;

в

cin>>mbo.foodmoney;

и изменить

cin>>hobbymoney;

в

cin>>mbo.hobbymoney;
1

По вопросам рекламы [email protected]