[英]Friend Function can't access private member of private member
#include <iostream>
using namespace std;
class A {
friend void print(B&);
int number;
};
class B {
friend void print(B&);
A object;
};
void print(B& C) {
cout << C.object.number;
};
此代码无法编译。 它给我 E0265 错误(成员 A::number 不可访问)
问题是 class B 没有被声明。 前向声明修复了编译错误。
#include<iostream>
using namespace std;
class B;
class A {
friend void print(B&);
int number;
};
class B {
friend void print(B&);
A object;
};
void print(B& C) {
cout << C.object.number;
};
int main(){
return 0;
}
这是一个前向声明问题。 Class A 有一个打印 function 引用了一个 class B 实例,但是 class B 还没有被定义。 所以编译器不理解并报错。
尝试这个:
#include <iostream>
using namespace std;
class B;
class A {
friend void print(B&);
int number;
};
class B {
friend void print(B&);
A object;
};
void print(B& C) {
cout << C.object.number;
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.