C++: "Class namespaces"?

标签 c++ oop class namespaces

如果在 C++ 中我有一个类 longUnderstandableName。对于那个类,我有一个包含其方法声明的头文件。在类的源文件中,我不得不写longUnderstandableName::MethodAlongUnderstandableName::MethodB等等,无处不在。

我能否以某种方式使用命名空间或其他东西,这样我就可以只在类源文件中编写 MethodAMethodB 了吗?

最佳答案

typedef longUnderstandableName sn;

然后你可以定义方法为

void sn::MethodA() {}
void sn::MethodB() {}

并将它们用作

sn::MethodA();
sn::MethodB();

这仅适用于 longUnderstandableName是一个类的名称。即使该类被深深嵌入到其他命名空间中,它也能正常工作。

如果 longUnderstandableName是命名空间的名称,那么在你要使用方法的命名空间(或源文件)中,可以写

using namespace longUnderstandableName;

然后调用类似的方法

MethodA();
MethodB();

您应该注意不要使用 using namespace foo;在头文件中,因为它会污染每个 .cpp我们的文件 #include将头文件放入,但是使用 using namespace foo;.cpp 的顶部文件绝对是允许和鼓励的。

关于C++: "Class namespaces"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4065563/

相关文章:

oop - 特定时间段有效的业务规则——如何有序管理

java - 自定义公历月份

c++ - 我创建的类出现 LNK 2019 错误

java - 相同的类(class)类型转换?

c++ - 如何在创建和对象时初始化类内的二维数组

C++ 子类 - 重用重载运算符?

c++ - 使用带有唯一指针 vector 的查找算法

c++ - 填充数组会导致数组周围的堆栈被破坏

c++ - 生成器在 C++20 View 管道中调用两次

c++ - 为什么 "using MyBase::myMethod"解决 "request for member myMethod is ambiguous"? (不是菱形图案!!!)