青梦丶 2017-07-28 11:53 采纳率: 0%
浏览 1989

C++友元函数和友元类的使用问题。

#include

using namespace std;

class Y;

class X
{
private:
int i;
public:
X(){ i = 0; }
friend void h(X*);
friend void Y::g(X x);
//friend class Y;
friend class Z;
};

class Y
{
public:
void g(X*);
};
void Y::g(X*x)
{
(x->i) += 1;
}

class Z
{
public:
void f(X*);
};

void Z::f(X*x)
{
x->i += 5;
}

void h(X* x)
{
x->i += 10;
}

int main()
{
X x;
Y y;
y.g(&x);

/* X x;
Z z;
z.f(&x)*/;

system("pause");
return 0;

}
3 IntelliSense: 声明与 "void Y::g(X *x)" (已声明 所在行数:24) 不兼容 c:\Users\dell\Desktop\Project2\Project2\main.cpp 14 17 Project2
4 IntelliSense: 成员 "X::i" (已声明 所在行数:10) 不可访问 c:\Users\dell\Desktop\Project2\Project2\main.cpp 26 6 Project2
错误 2 error C2248: “X::i”: 无法访问 private 成员(在“X”类中声明) c:\users\dell\desktop\project2\project2\main.cpp 26 1 Project2
错误 1 error C2027: 使用了未定义类型“Y” c:\users\dell\desktop\project2\project2\main.cpp 14 1 Project2

  • 写回答

2条回答 默认 最新

  • devmiao 2017-07-28 14:40
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器