簡體   English   中英

我如何獲得一個類成員函數來訪問另一個類成員函數的私有成員?

[英]How do i get a class member function to have access to another class member function's private member?

我的問題是我試圖獲得一個類成員函數,以訪問另一個類的私有成員變量。 我已將類成員函數聲明為該類的朋友,但編譯器繼續告訴我該變量不可訪問。 這是代碼:

    #include <iostream>

    using namespace std;
    class Numbers2;

    class Numbers
    {
    private:
        int num;
    public:
        Numbers(){num = 0;};
        friend void Numbers2::getNumbers(Numbers &);

    };

    class Numbers2
    {
    private:

    public:
        void getNumbers(Numbers &);
    };

    void Numbers2::getNumbers(Numbers &numbs)
        {
            cout << numbs.num << endl; //Right here is where the compiler 
                                       //leads me and tells me the variable
        };                             // is inaccessible

    int main()
    {
        Numbers num1;
        Numbers2 num2;

        num2.getNumbers(num1);


        system ("Pause");
        return 0;
    }

我將不勝感激任何幫助,謝謝!

您沒有閱讀所有錯誤消息。 您只讀過一個說int成員不可訪問的消息 ,但是上面的消息告訴您原因

main.cpp:12:51: error: invalid use of incomplete type 'class Numbers2'
         friend void Numbers2::getNumbers(Numbers &);
                                                   ^
main.cpp:4:11: error: forward declaration of 'class Numbers2'
     class Numbers2;
           ^
main.cpp: In member function 'void Numbers2::getNumbers(Numbers&)':
main.cpp:9:13: error: 'int Numbers::num' is private
         int num;
             ^
main.cpp:25:27: error: within this context
             cout << numbs.num << endl;
                           ^

出現這些最終錯誤僅是因為第一個錯誤導致整個friend聲明失敗。 因此,這是您需要修復的第一個錯誤。

看,您不能在那里引用Numbers2::getNumbers ,因為Numbers2僅在那時被向前聲明:編譯器對其中的一個名為getNumbers的函數一無所知!

相反,把定義Numbers2 上文定義的Numbers ,和前瞻性聲明Numbers

現場演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM