簡體   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