[英]Implement class without scope resolution operator?
如果我在头文件中声明我的类,没有所有那些烦人的作用域解析运算符,有没有办法实现该类? 我不喜欢为每个成员重写类名。 我想我以前曾经尝试过这样做:
在啊
#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
的项目中工作。 我不会使用预处理器宏来隐藏这么长的名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.