T.T*_*.T. 1 c++ oop class object
简化代码来表达概念:
class classA
{
public:
private:
int a;
seta(int x);
};
//local prototype
void somefunction();
int main()
{
classA object; //create an object of the class
somefunction(object);
return 0;
}
void somefunction(classA &object)
{
object.seta(5);
}
Run Code Online (Sandbox Code Playgroud)
}
如果我移动seta()到该类的公共部分,则没有错误并且它会执行.
但是,如果我移动seta()到私有部分,我会收到以下错误:
错误C2248:'
anonymous-namespace'::classA::seta' : cannot access private member declared in class 'anonymous-namespace':: classA'
如果该函数是私有的,只有这个类调用它,为什么会出现问题?
编辑我将对象从main传递给本地函数
调用的函数seta()不属于classA,所以这是一个错误; 这就是它的定义private.如果你做somefunction()的成员classA,或宣布它是一个friend的classA,那么这是可行的.