struct I {
virtual void foo() = 0;
virtual void bar() = 0;
};
struct A {
void foo(){};
};
struct B: public A, public I {
void bar(){};
};
这个伪代码应该在 C++ 中有效吗?目前,我在链接时收到 foo()
的 undefined reference 错误。
如果这不起作用,请推荐一种创建接口(interface)的技术,该接口(interface)通过继承实现,如示例中所示。
最佳答案
这取决于您所说的“有效”是什么意思。您必须添加缺少的返回类型,并可能修复一些其他语法问题,才能使其编译。
如果你的意思是,“B
是一个非抽象类,它正确地覆盖了 I
中声明的两个纯虚函数吗?”,那么不是。它不会覆盖 foo
;继承同名函数不算重写。
如果你想要A::foo
待执行I::foo
, 那么你必须在 B
中添加一个包装器提供覆盖:
void foo() {A::foo();} // assuming the missing return type is void
关于c++ - 是否可以通过继承来实现一个接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29105089/