如何在c ++中定义的同一文件中限制函数作用域?

Dip*_*jan 3 c++ namespaces

我有公共成员函数调用私有成员函数.我想在私有成员函数定义可用的文件中限制私有成员函数的范围.在C中,我在函数名之前使用static来限制它在文件中的范围,我该如何在C++中实现它.

class Base
{
  public:
  void XYZ1(void);
  void XYZ2(void);
  private:
  void fun(void);
};

void Base::XYZ1(void)
{
  fun();
}

void Base::fun(void)
{
  // do something;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果在其他.cpp文件中定义了成员函数XYZ2,则不应该允许它从中调用fun().基本上将fun()函数限制为文件范围.在a1.cpp

void Base::XYZ2(void)
{
  fun();// this should result in some error saying fun() is not defined in its scope.
}
Run Code Online (Sandbox Code Playgroud)

R S*_*ahu 6

我想在私有成员函数定义可用的文件中限制私有成员函数的范围.

private成员函数不能被其他类或功能来使用,除非他们被授予friend由类-ship.从这个意义上说,可以调用函数的范围已经是有限的.

话虽如此,该类的任何成员函数或已被friend类授予的任何类或函数都能够调用private成员函数.

防止在定义它的文件之外调用该函数的唯一方法是使其成为static.cpp文件中的非成员函数.或者将它放在.cpp文件中的匿名命名空间中.

  • 或者将它放在.cpp文件中的匿名命名空间中. (4认同)