我有类Foo。

struct Foo
{
    void someFunc()
    {
    }
};

我有一个接口(interface)IFoo。
struct IFoo
{
    virtual void someFunc() = 0;
};

如果我不想直接在IFoo中实现IFoo,是否有办法在以后使用它?

...

失败的尝试是这样做:
创建一个同时实现它们的类。通过从Foo继承来理论上满足IFoo。
struct Bar : Foo, IFoo
{

};

可以这样使用:
Bar x = Bar();
IFoo* y = &x;

但这是行不通的。编译器将Bar视为抽象。

请问有人有什么想法吗?没有实际的代码问题可粘贴,我只是想看看是否有可能这样做。

最佳答案

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

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

关于c++ - 接口(interface)的后期实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25911412/

10-12 18:51