Eve*_*Eve 12 c++ oop namespaces class
如果在C++中我有一个类longUnderstandableName.对于该类,我有一个包含其方法声明的头文件.在该类的源文件,我必须写longUnderstandableName::MethodA,longUnderstandableName::MethodB等等,无处不在.
我能以某种方式利用命名空间或别的东西,所以我可以只写MethodA和MethodB,类源文件中,也只有在那里?
Ken*_*oom 12
typedef longUnderstandableName sn;
Run Code Online (Sandbox Code Playgroud)
然后您可以将方法定义为
void sn::MethodA() {}
void sn::MethodB() {}
Run Code Online (Sandbox Code Playgroud)
并将它们用作
sn::MethodA();
sn::MethodB();
Run Code Online (Sandbox Code Playgroud)
这只有longUnderstandableName在类的名称时才有效.即使该类深深嵌入其他一些命名空间,它也能工作.
如果longUnderstandableName是命名空间的名称,那么在要使用这些方法的命名空间(或源文件)中,您可以编写
using namespace longUnderstandableName;
Run Code Online (Sandbox Code Playgroud)
然后调用类似的方法
MethodA();
MethodB();
Run Code Online (Sandbox Code Playgroud)
您应该小心不要使用using namespace foo;in头文件,因为它会污染.cpp我们#include头文件所包含的每个文件,但是绝对允许并鼓励using namespace foo;使用.cpp文件顶部的文件.
我不确定我是否会推荐它,但您可以使用如下宏:
#define sn LongUnderstandableName
void sn::MethodA(parameters) { ... }
int sn::MethodB(parameters) { ... }
Run Code Online (Sandbox Code Playgroud)
等等。宏的缺点之一是它们不尊重范围,但在这种情况下,您(显然)想要的范围是源文件,它恰好与宏的范围对应(非常接近)。