【发布时间】:2015-05-23 22:25:44
【问题描述】:
假设您有一个具有多个功能的基类,例如
virtual int func1();
virtual int func2();
virtual int func3();
virtual int func4();
等等
你想要有两个子类,Child1 和 Child2。 Child1 可以包含 func1() 和 func2() 但不包含 func3() 或 func4(),而 Child2 包含 func3() 和 func4() 但不包含 func1() 或 func2()?
所以 Child1 将包含:
int func1()
int func2()
而 Child2 将包含:
int func3()
int func4()
我问是因为我正在尝试做这样的事情,但是当我尝试运行它时,我不断收到未定义的引用错误。例如,会出现如下错误:
/tmp/cczUiDZ2.o:(.rodata._ZTV5Child1[_ZTV5Child1]+0x38): undefined reference to `Parent::func3()'
【问题讨论】:
-
不——听起来你想要一个界面。
-
什么是接口?
-
如果您不希望它们被实际派生,为什么还要派生这些类?
-
@Jaclyn:考虑以下问题:
Child1 child; Base* base = &child; base->func1(); base->func3();这两个方法调用实际上应该做什么?我们不能让它们在编译时失败。 -
您可能需要重新考虑应用程序的架构。这些问题表明设计存在缺陷
标签: c++ inheritance