如何使大量现有函数在类的作用域中可用
How to make large numbers of existing functions available in the scope of a class?
我需要将一个大型(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;
相关文章:
- 未在作用域中声明unordered_map
- 有没有一种方法可以在编译时获得作用域类名
- C++quit()函数中可能存在作用域问题
- 未在此作用域OpenCV3.4中声明cvSaveImage
- 全局作用域中函数指针的赋值
- 在类函数中初始化外部作用域变量
- 不同作用域中的静态变量和全局变量
- 是同一作用域的函数部分中的函数调用
- 未在此作用域中声明的函数和变量 (C++)
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- 将作用域枚举转换为基础类型
- 表达式必须具有完整或无作用域的枚举图
- 在构造函数中输入对象时C++类成员作用域
- 当变量在多个函数作用域中使用时,我应该在类 private 中声明该变量吗?
- 大括号的作用域是否用于注释目的,从而降低C++代码的速度
- C++中没有大括号的for循环的作用域是什么
- 如何使.h中创建的变量成为程序的全局作用域
- 是否可以使作用域枚举("enum class")在上下文中可转换为布尔值?
- 如何使大量现有函数在类的作用域中可用
- 是否使用大括号进行其他作用域