如何使大量现有函数在类的作用域中可用

How to make large numbers of existing functions available in the scope of a class?

本文关键字:作用域 何使大 函数      更新时间:2023-10-16

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

问题是,现在有大约1000个函数需要成为这个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;