加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 不使用定义的较短呼叫/名称

发布时间:2020-12-16 10:27:53 所属栏目:百科 来源:网络整理
导读:简单的问题,如何在不使用定义的情况下缩短调用/名称. 例如,我有一个我必须在命名空间内调用的单例(我不能使用命名空间blabla,因为它是不允许的),如下所示: MyFW::GameRoot::Instance()-DoSomething(); 现在我可以将它分配给一个变量,如果我在同一个类/函数
简单的问题,如何在不使用定义的情况下缩短调用/名称.

例如,我有一个我必须在命名空间内调用的单例(我不能使用命名空间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显示在观察窗口(甚至将鼠标悬停在它上面,以便在调试中快速拉出对象),这是它无法做到的.

还有其他选择吗?你们做些什么来缩短名字?只需使用本地/成员指针来存储实例?

谢谢!

解决方法

如果要简化多个函数的访问,只需使用辅助函数:

namespace {
    MyFW::GameRoot* root() { return MyFW::GameRoot::Instance(); }
}

// ...
root()->DoSomething();

两个字符更多,但它包括类型安全.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读