Sam*_*rsa 3 c++ visual-studio-2008
简单的问题,如何在不使用定义的情况下缩短调用/名称.
例如,我有一个我必须在命名空间内调用的单例(我不能使用命名空间blabla,因为它是不允许的),如下所示:
MyFW::GameRoot::Instance()->DoSomething();
Run Code Online (Sandbox Code Playgroud)
现在我可以将它分配给一个变量,如果我在同一个类/函数中多次使用它,它会有所作为,但在许多类/函数中使用它会变得很麻烦.我决定使用#define:
#define MyFW::GameRoot::Instance() ROOT //defined in GameRoot.h
ROOT->DoSomething(); //Used where-ever GameRoot.h is included
Run Code Online (Sandbox Code Playgroud)
更好,我真的很喜欢它,特别是因为现在无论我在哪里看到ROOT(通过V-Assist进行颜色编码)我都知道它是什么...除非我在那里有一个断点,我需要Visual Studio解决ROOT显示在观察窗口(甚至将鼠标悬停在它上面,以便在调试中快速拉出对象),这是它无法做到的.
还有其他选择吗?你们做些什么来缩短名字?只需使用本地/成员指针来存储实例?
谢谢!
使用本地参考:
MyFW::GameRoot& ROOT = *MyFW::GameRoot::Instance();
Run Code Online (Sandbox Code Playgroud)
不要使用定义.
你不能使用命名空间...,但你能使用吗?
namespace root=MyFW::GameRoot;
Run Code Online (Sandbox Code Playgroud)
然后你可以输入
root::Instance()->DoSomething();
Run Code Online (Sandbox Code Playgroud)
定义这样的命名空间比#define更好.(即它不会被误导到其他地方.编译器知道你要做什么.)
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |