gpt4 book ai didi

c++ - 缩短嵌套的命名空间名称

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:48 26 4
gpt4 key购买 nike

如果您使用嵌套的命名空间,头文件中的声明可能会变得很长且不可读。

//header1
namespace test { namespace test1 {
class Test {};
} } //namespace

在程序的header2中:

#include "header1"

namespace test2 {

class Test1 {
void test(test::test1::Test &test) {}
void test1(test::test1::Test &test) {}
void test2(test::test1::Test &test1, test::test1::Test &test2) {}
};

}

是否有可能缩短 header2 中的名称?

最佳答案

这是我最喜欢的技巧:

#include "header1"

namespace test2 {

class Test1 {
private:
typedef ::test::test1::Test MeaningfulName;

void test(MeaningfulName &test) {}
void test1(MeaningfulName &test) {}
void test2(MeaningfulName &test1, MeaningfulName &test2) {}
};

}

我将我的 typedef 别名设为私有(private),但我将它们放在类声明的开头。它们对程序的其余部分是私有(private)的并不重要,因为没有人会使用别名,他们将使用实际类型名称或他们自己的别名作为名称。

我也真的更喜欢使用锚定的命名空间名称以避免以后出现意外。我对此的规则是,我总是使用锚定名称,除非命名空间是我控制的和/或是当前项目或包或其他任何东西的一部分。然后我将使用尽可能短的相对名称。如果该相对名称从根 namespace 开始,我仍然经常使用锚定名称。

主要问题是有向图<:一旦你开始更频繁地使用锚定名称,它就会经常出现在模板声明中。您必须放置一个空格来避免它,特别是因为有向图处理发生在非常早的阶段并且可能会给您一些非常奇怪的错误消息。

关于c++ - 缩短嵌套的命名空间名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1661526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com