首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

友元函数,求纠错,该如何解决

2013-11-04 
友元函数,求纠错本帖最后由 henry11379 于 2013-11-02 23:25:13 编辑#include stdafx.hclass c2class c

友元函数,求纠错
本帖最后由 henry11379 于 2013-11-02 23:25:13 编辑
#include "stdafx.h"
class c2;
class c1
{
public:
void display(c2 &cc);



};

class c2
{
public:

c2()
{
   x=2;
}
friend void c1::display(c2 &cc);
private:
int x;


};
void display(c2 &cc)
{
   printf("%d",cc.x);
}
int _tmain(int argc, _TCHAR* argv[])
{   
    c1 obj;
c2 obj2;
obj.display(obj2);

return 0;
}
为何有运行错误,友元函数不是可以访问私有成员变量吗
[解决办法]
错误在这里:


void display(c2 &cc)
{
   printf("%d",cc.x);
}

你这样写,实际是定义了一个全局函数void display(c2 &cc)而不是实现类c1中声明的void display(c2 &cc);这样定义就对了:

void c1::display(c2 &cc)
{
   printf("%d",cc.x);
}

[解决办法]
没看到你的display成员函数的实现体呢, 
只要看到一个全局的display函数,它是全局的,不属于任何一个class的
如果是c1的话,应该加上对应的c1::域!

热点排行