簡化代碼來表達概念:一個類的私有函數可以從一個本地函數中調用嗎?
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);
}
}
如果我提出seta()
的類的公共部分沒有任何錯誤,它執行。
但是,如果我移動seta()
私有部分,我得到以下錯誤:
error C2248: '
anonymous-namespace'::classA::seta' : cannot access private member declared in class '
anonymous-namespace'::classA'
如果功能是私人的,只有這個類調用它,爲什麼會出現問題?
EDIT我傳遞的對象從主到本地函數
您在main中的評論是錯誤的 - 您正在創建一個類的實例(這是一個對象),而不是創建一個類。 – razlebe
'void main()'應該是'int main()'。 –
你顯然對什麼私人手段有誤解。你引用的例子顯然是非法的,我努力想象爲什麼你認爲它應該是好的。如果你想獲得一些理解,也許你需要解釋你的推理。或者,如果你想從中調用私有方法,只需要將某個功能變成classA的一個朋友。 – john