#include <iostream>
#include <string>
#include <cstring>
using namespace std;
class Boy;
class Girl
{
public: Girl(char N[],int A); friend void prodata(const Girl &plg,const Boy &plb);
private: char name[25]; int age;
};
Girl::Girl(char N[],int A)
{ strcpy(name,N); age=A;
}
class Boy
{
public: Boy(char N[],int A); friend void prdata(const Girl plg,const Boy &plb);
private: char name[25]; int age;
};
Boy::Boy(char N[],int A)
{ strcpy(name,N); age=A;
}
void prdata(const Girl &plg,const Boy &plb)
{ cout<<"girl's name:"<<plg.name<<"\n"; cout<<"girl's age:"<<plg.age<<"\n"; cout<<"boy's name:"<<plb.name<<"\n"; cout<<"boy's age:"<<plb.age<<"\n"; }
int main()
{ Girl g1("ssm",12); Girl g2("xiaohu",13); Girl g3("xlb",12); Boy b1("gala8",13); Boy b2("ycw",12); Boy b3("wei",14); prdata(g1,b1); prdata(g2,b2); prdata(g3,b3); return 0;
} 為什么plg plb呼叫不了呢?
uj5u.com熱心網友回復:
plg.name --------- 像這樣呼叫private member是不行的阿, 加get函式取得private member吧uj5u.com熱心網友回復:
可不是友元函式是可以直接呼叫的嗎uj5u.com熱心網友回復:
可不是友元函式是可以直接呼叫的嗎uj5u.com熱心網友回復:
問題見注釋,供參考:#include <iostream>
#include <string>
#include <cstring>
using namespace std;
class Boy;
class Girl
{
public: Girl(char N[],int A);
friend void prdata(const Girl &plg,const Boy &plb);
//friend void prodata(const Girl &plg,const Boy &plb);
private: char name[25];
int age;
};
Girl::Girl(char N[],int A)
{
strcpy(name,N);
age=A;
}
class Boy
{
public: Boy(char N[],int A);
friend void prdata(const Girl &plg,const Boy &plb);
private: char name[25];
int age;
};
Boy::Boy(char N[],int A)
{
strcpy(name,N);
age=A;
}
void prdata(const Girl &plg,const Boy &plb)
{
cout<<"girl's name:"<<plg.name<<"\n";
cout<<"girl's age:" <<plg.age<<"\n";
cout<<"boy's name:" <<plb.name<<"\n";
cout<<"boy's age:" <<plb.age<<"\n";
}
int main()
{
Girl g1("ssm",12);
Girl g2("xiaohu",13);
Girl g3("xlb",12);
Boy b1("gala8",13);
Boy b2("ycw",12);
Boy b3("wei",14);
prdata(g1,b1);
prdata(g2,b2);
prdata(g3,b3);
return 0;
}
uj5u.com熱心網友回復:
在Girl類里,友元函式名不同,多了個‘o':friend void prdata(const Girl &plg,const Boy &plb);
//friend void prodata(const Girl &plg,const Boy &plb);
uj5u.com熱心網友回復:
void prdata(const Girl &plg,const Boy &plb) prdata拼寫錯了 friend void prdata(const Girl plg,const Boy &plb);uj5u.com熱心網友回復:
你宣告寫的是 prodatauj5u.com熱心網友回復:
多謝!
uj5u.com熱心網友回復:
多謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/272654.html
標籤:新手樂園
上一篇:怎么用8086(匯編)寫程式使 輸入兩個十進制數,然后螢屏顯示十六進制的算式及結果
下一篇:關于停車問題時長最短,c++
