我需要将一个大型项目(100个源文件)放入一个库中,通过将它们全部放入一个类对象中来删除数十个全局变量。
问题是现在需要成为该class
成员的数千个函数才能访问对象变量。
除了将MyClass::
添加到源文件中的每个函数定义之外,还有什么方法可以作弊并指出特定源文件中的所有函数都应属于MyClass
范围吗?
最佳答案
将所有全局变量添加到namespace
。
// MyGlobals.h
namespace MyGlobals
{
extern int g_i;
extern double g_d;
extern A g_A;
}
无论您要访问什么文件,请执行以下操作:
using namespace MyGlobals;
在头文件中。通过这种(
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;