简单的问题,如何在不使用定义的情况下缩短调用/名称。
例如,我有一个必须在命名空间内调用的单例(我不能使用 using namespace blabla 因为这是不允许的),如下所示:
MyFW::GameRoot::Instance()->DoSomething();
现在我可以将它分配给一个变量,如果我在同一个类/函数中多次使用它,这会有些效果,但在许多类/函数中使用它会变得很麻烦。我决定为它使用#define:
#define MyFW::GameRoot::Instance() ROOT //defined in GameRoot.h
ROOT->DoSomething(); //Used where-ever GameRoot.h is included
好多了,我真的很喜欢它,因为现在无论我在哪里看到 ROOT(通过 V-Assist 进行颜色编码),我都会立即知道它是什么......除非我在那里有一个断点并且我需要 Visual Studio 将 ROOT 解析为显示在监 window 口中(或者甚至将鼠标悬停在它上面以快速拉出调试中的对象),这是它做不到的。
还有其他选择吗?你们用什么来缩短名字?简单地使用本地/成员指针来存储实例?
谢谢!
最佳答案
你不能使用using namespace ...,但是你可以使用吗
namespace root=MyFW::GameRoot;
然后你可以输入
root::Instance()->DoSomething();
像这样定义命名空间比 #define 更好。 (即它不会在其他地方被错误地破坏。编译器知道你想做什么。)
关于c++ - 在不使用定义的情况下缩短调用/名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3262020/