我需要将一个大型项目(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;

10-08 00:34