如何缩短类中的命名空间?[复制]

How do I shorten a namespace within a class? [duplicate]

提问人:H.v.M. 提问时间:9/21/2023 更新时间:9/21/2023 访问量:70

问:

我想缩短一个命名空间以供 使用 ,例如通过或定义别名:MyClassusing namespace

namespace foo = really::loong::name::space;

class MyClass {
private:
    foo::FooClass f;
// ...
};

但是,这会污染全局命名空间,并有可能影响其他地方的代码。我可以将上述代码包装在命名空间中,但我对名称非常满意,我宁愿不必将其称为 .有什么办法可以解决这个问题吗?MyClassmynamespace::MyClass

使用 global-namespace namespace-alias C++ 命名空间

评论

4赞 StoryTeller - Unslander Monica 9/21/2023
“但是,这会污染全局命名空间” - 为什么您的类本身不在专用命名空间中?强烈建议这样做。
0赞 Some programmer dude 9/21/2023
您的意思是您不希望自己在全局命名空间中吗?然后,您确实需要在特定命名空间中定义它,即使它很长并且有很多嵌套。MyClass
0赞 StoryTeller - Unslander Monica 9/21/2023
认为污染有点矛盾,但不知何故不是。此外,您仍然可以在定义它的命名空间引用 unqualified。fooMyClassMyClass

答:

3赞 Aykhan Hagverdili 9/21/2023 #1

但我对这个名字很满意,我宁愿不必将其称为.MyClassmynamespace::MyClass

无论如何,将类放在命名空间中,这样它也不会污染全局名称。如果您的用户更喜欢短名称,他们可以添加 .using mynamespace::MyClass

评论

0赞 Jan Schultke 9/21/2023
我可能也值得将这个想法添加到链接的重复问答中。那里还没有任何答案建议它。using