如何在类的范围内提供大量现有函数?

use*_*895 5 c++ scope class function member

我需要将一个大的(100个源文件)项目放入一个库中,通过将它们全部放入一个类对象中来删除几十个全局变量.

问题是现在需要成为其成员的大约一千个函数,class因此他们可以访问对象变量.

Otehr比添加MyClass::到源文件中的每个函数定义,有没有办法作弊并指出特定源文件中的所有函数都应该是MyClass作用域的一部分?

iam*_*ind 6

将所有全局变量添加到a namespace.

// MyGlobals.h
namespace MyGlobals
{
  extern int g_i;
  extern double g_d;
  extern A g_A;
}
Run Code Online (Sandbox Code Playgroud)

无论您要访问哪些文件,请执行以下操作:

using namespace MyGlobals;
Run Code Online (Sandbox Code Playgroud)

在头文件中.在this(using namespace)方式中,您可以指示应该可以访问所有变量,而无需使用::该文件的范围分辨率.(即您可以简单地访问g_i而不是MyGlobals::g_i在该文件内).

另请注意,您必须定义.cpp文件中的所有全局变量:

// MyGlobals.cpp
#include "MyGlobals.h"

int MyGlobals::g_i;
double MyGlobals::g_d;
A MyGlobals::g_A;
Run Code Online (Sandbox Code Playgroud)