【发布时间】:2011-12-15 09:56:16
【问题描述】:
我在初始化列表中有很多命名空间使用,并希望 使用命名空间 来减少冗长。但是初始化列表超出了构造函数大括号的范围,所以我必须将 using 放在构造函数之外并用它污染文件的其余部分。有没有办法根据我的需要确定使用范围?而不是:
MyClass::MyClass() :
m_one(nsConstants::ONE),
m_two(nsConstants::TWO),
m_three(nsConstants::THREE)
{}
我想要:
MyClass::MyClass() :
using namespace nsConstants;
m_one(ONE),
m_two(TWO),
m_three(THREE)
{}
_
【问题讨论】:
-
它是什么语言?请适当标记。
-
抱歉 Tomasz,感谢您的评论。编辑添加 C++ 标签。
-
为避免混淆应将其称为“ctor-initializer”,因为 C++ 语法元素“initializer-list”是另外一回事(
{}之间的部分用于聚合初始化程序)。使用“污染”文件的其余部分有什么不好?这是您的 .cxx 文件,而不是标题,所以应该没问题。另一种选择是做using nsConstants::ONE;,但你想要的是不可能的。 -
嗨 PlasmaHH,我是程序员而不是编译器编写者,所以我更喜欢在用户范围内使用语言,例如 C++ FAQ。我想这样我会更准确。就我而言,污染不好,因为我使用命名空间来防止名称冲突。谢谢你的想法。
标签: c++ list namespaces using