-2

このコードを書きましたが、フレンド関数が機能しません (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;
}
4

3 に答える 3

3
mbo.friendvar=(foodmoney+hobbymoney);

する必要があります

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

などなど

フレンド関数はメンバー関数ではないため、特定のオブジェクトへの特別なアクセス権はありません。アクセスしたいオブジェクトを指定する必要があります(mboあなたの場合は を使用して)。

caldata がフレンド関数である理由がわかりません。通常のメンバー関数にしないのはなぜですか? それとも、2 つの引数を持つフレンド関数にする必要がありますか? ここで何を達成しようとしているのかを言うのは難しいです。

于 2013-03-24T07:18:30.363 に答える
1

変化する

 cin>>foodmoney;

cin>>mbo.foodmoney;

変更する

cin>>hobbymoney;

cin>>mbo.hobbymoney;
于 2013-03-24T07:22:01.137 に答える