![](/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.