青梦丶
2017-07-28 11:53C++友元函数和友元类的使用问题。
#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条回答
为你推荐
- 新手上路,有个问题请教各位大佬,帮看看呗
- c++
- 1个回答
- 这怎么搞?将类的定义放在另一个头文件吗?
- c语言
- c++
- 1个回答
- 类的友元函数不能引用类对象的数据成员
- c++
- 1个回答
- 怎么用C++编写组合对象的使用?
- c语言
- 开发语言
- c++
- 1个回答
- 临时对象到底是不是对象,为什么我的代码会出错?c++
- c++
- 3个回答