我想知道是否可以将主程序中的方法添加到头文件中定义的现有类中.例如:class CFun
在文件中定义了CFun.hpp
,但在我们中party.cpp
我们想要添加一个方法void hello() {cout << "hello" << endl;};
而不进行编辑CFun.hpp
显然(不幸的是)建筑:
#include "CFun.hpp" class CFun { public: void hello() {cout << "hello" << endl;}; };
不起作用返回错误 Multiple declaration for 'CFun'
是否可以在没有类继承的情况下使其工作?
不,但是你可以添加一个方法来获取CFun类的引用/指针 - 你将无法访问私有数据:
void Hello(CFun &fun) { cout << "hello" << endl; }
这可能是你能做的最好的.正如litb所指出的 - 这个函数必须与CFun位于相同的名称空间中.幸运的是,与类不同,名称空间可以添加到多个位置.
您可以像这样重新定义类:
#define CFun CLessFun #include "CFun.hpp" #undef CFun class CFun : CLessFun { public: void hello() {cout << "hello" << endl;}; };
把它放在一个新的头文件中CMoreFun.hpp
,而不是包含它CFun.hpp