繁体   English   中英

好友Function无法访问私人会员的私人会员

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM