//**** Build of configuration Debug for project Calculator ****
**** Internal Builder is used for build ****
g++ -O0 -g3 -Wall -c -fmessage-length=0 -o src\Calculator.o ..\src\Calculator.cpp
..\src\/Calculator.h: In function 'std::ostream& operator<<(std::ostream&, CComplex)':
..\src\/Calculator.h:38:9: error: 'float CComplex::m_imaginary' is private
..\src\Calculator.cpp:79:8: error: within this context
..\src\/Calculator.h:37:9: error: 'float CComplex::m_real' is private
..\src\Calculator.cpp:81:12: error: within this context
..\src\/Calculator.h:38:9: error: 'float CComplex::m_imaginary' is private
..\src\Calculator.cpp:81:31: error: within this context
..\src\/Calculator.h:37:9: error: 'float CComplex::m_real' is private
..\src\Calculator.cpp:85:12: error: within this context
..\src\/Calculator.h:38:9: error: 'float CComplex::m_imaginary' is private
..\src\Calculator.cpp:85:31: error: within this context
Build error occurred, build is stopped
Time consumed: 687 ms.
任何人都可以帮助我 - 我正在尝试访问不接受访问权限的私人功能。
答案 0 :(得分:2)
好吧,如果不是这样,那么这将是一个很好的问题。
当在类成员列表之前时,private关键字指定 这些成员只能从成员函数和 班上的朋友。这适用于所有声明的成员 下一个访问说明符或类的结尾。
无法访问成员函数,因为您尝试从类外部访问它。如上所述,private关键字用于防止这种情况。
如果您确实需要从课外访问,那么您需要使用public关键字将其设为公共方法。
在此处查看有关私人关键字的some examples and explanation。
看着你的错误,我认为问题在于你的运算符重载&lt;&lt; 。 操作员只能作为朋友功能重载,这本身就可以解决您的问题。
friend std::ostream& operator<<(std::ostream&, CComplex);
答案 1 :(得分:1)
您可能希望成为operator<<
班级的CComplex
朋友。像这样:
class CComplex {
...
// It doesn't matter whether this declaration is on a private,
// public or protected section of the class. The friend function
// will always have access to the private data of the class.
friend std::ostream& operator<<(std::ostream&, CComplex);
};