如果我在头文件中声明我的类,是否有任何方法可以在没有所有那些烦人的范围解析运算符的情况下实现该类?我不喜欢为每个成员重写类名。我想我以前试过这样做:
在啊
#if !defined(a_h)
#define a_h
class A {
int function (int);
int foo (void);
};
#endif
在 A.cpp 中
#include "A.h"
class A {
int function (int number) {
return 2* number;
}
int foo (void){
return 2;
}
}
但出现了一些错误(不幸的是现在无法测试)。
最佳答案
您可以使用预处理器宏来简化它。
#include "A.h"
#ifdef _
#undef _
#endif
#define _(fun) A::fun
int _(function)(int number)
{
return 2* number;
}
int _(foo)(void)
{
return 2;
}
但是……
你不应该仅仅因为你可以就做某事。
使用预处理器宏来隐藏语言的重要结构是不明智的。在您走这条路之前,请考虑以下事项。
写作所花费的时间
<ClassName>::
与在任何有用的程序中编写其余代码所花费的时间相比,时间会逐渐减少。您花在调试和维护程序上的时间比花在写作上的时间要多得多
<ClassName>::
.当您在
.cpp
中有多个类时文件中,如果对所有类采用相同的策略,您将很难清楚地看到哪个函数对应于哪个类。在调试时,您会因为在进入函数时无法看到完全限定的函数名称而感到沮丧。
为了在实现类的成员函数时节省几次击键而失去清晰度的代价太大了。
我说的是经验。我在其中一个类名是 INR_DynamicallyTypedLowFidelityLeafComponentRepresentation
的项目中工作.我不会使用预处理器宏来隐藏那么长的名字。
关于c++ - 在没有范围解析运算符的情况下实现类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24898829/