我有一堂课。
struct Foo
{
void someFunc()
{
}
};
我有一个接口IFoo。
struct IFoo
{
virtual void someFunc() = 0;
};
如果我不想直接将IFoo实现到Foo中,有没有办法在以后实现呢?
...
失败的尝试是这样做的: 创建一个实现它们的类......理论上通过继承Foo来满足IFoo。
struct Bar : Foo, IFoo
{
};
可以这样使用:
Bar x = Bar();
IFoo* y = &x;
但那并没有奏效。编译器将Bar视为抽象。
有人有任何想法吗?粘贴没有实际的代码问题,我只是想看看这样的事情是否可行。
答案 0 :(得分:7)
struct Bar : IFoo, Foo
{
virtual void someFunc()
{
Foo::someFunc();
}
};
或:
struct Bar : IFoo
{
Foo foo;
virtual void someFunc()
{
foo.someFunc();
}
};