创建 C++ 继承结构时,必须在多个位置定义完全相同的成员函数:
如果 B 是一个抽象基类,并且 D、E 和 F 都继承自 B,你可能会有这样的情况:
class B
{
virtual func A( ... params ) = 0;
};
class D : public B
{
func A( ... params );
};
/* ... etc... similar implementations for E and F */
所以,这里显然有一些重复。如果到B的接口很大,如果接口需要改变,你可能有很多地方需要改变。
一位同事建议使用巧妙创建的嵌入式#includes 进行一些技巧,ala:
class D: public B
{
#include "B_Interface.h" // B_Interface.h is a specially crafted .h file
}
这似乎有点笨拙?是吗?有没有更好的解决方案来避免双重维护?
另外,也许这里的解决方案真的是更好的支持语言的工具,比如 Visual Assist X?
编辑:假设派生类必须具有唯一的实现。