可以从本地函数调用类的私有函数吗?

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传递给本地函数

Ern*_*ill 6

调用的函数seta()不属于classA,所以这是一个错误; 这就是它的定义private.如果你做somefunction()的成员classA,或宣布它是一个friendclassA,那么这是可行的.