我有两个类X
和Y
。Y
具有私有成员mark
,X
具有功能getmark()
。
我将getmark()
声明为friend
的Y
。
现在,如何使用mark
函数访问Y
的私有成员friend
?
这是我到目前为止的代码
#include<iostream>
using namespace std;
class X
{
public:
int getmark();
};
class Y
{
int mark;
public:
friend int X::getmark();
};
int main()
{
}
最佳答案
#include<iostream>
using namespace std;
class Y; //forward declaration of class Y
class X
{
public:
int getmark(Y);
};
class Y
{
int mark;
public:
friend int X::getmark(Y);
};
int X::getmark(Y obj){
cin>>obj.mark;
}
int main()
{
X a;
Y b;
a.getmark(b);
}
首先,在创建对象a(类X)时,必须有类Y的前向声明才能将
Y
参数声明为X::getmark()
。创建对象b(类Y)将不会有问题,因为编译器知道类X存在(对于friend函数)。
然后,只需通过对象
getmark()
调用函数a
。注意:必须在类Y的声明之后声明函数
getmark()
,否则编译器会将类Y视为不完整的类型。