延迟实现接口

时间:2014-09-18 11:25:21

标签: c++ interface

我有一堂课。

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视为抽象。

有人有任何想法吗?粘贴没有实际的代码问题,我只是想看看这样的事情是否可行。

1 个答案:

答案 0 :(得分:7)

struct Bar : IFoo, Foo
{
    virtual void someFunc()
    {
        Foo::someFunc();
    }
};

或:

struct Bar : IFoo
{
    Foo foo;    
    virtual void someFunc()
    {
        foo.someFunc();
    }
};