![](/img/trans.png)
[英]How to access private static variable in static member function of another class?
[英]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.