C++ 接口的延迟实现
我有一门课C++ 接口的延迟实现,c++,interface,C++,Interface,我有一门课 struct Foo { void someFunc() { } }; 我有一个接口IFoo struct IFoo { virtual void someFunc() = 0; }; 如果我不想直接将IFoo实现到Foo中,有没有办法在以后再实现呢 尝试执行此操作失败: 创建一个同时实现它们的类。。。通过继承Foo,在理论上满足IFoo struct Bar : Foo, IFoo { }; 可以这样使用: Bar x = Bar(); I
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视为抽象的
有人有什么想法吗?粘贴没有实际的代码问题,我只是想看看这样的事情是否可行
struct Bar : IFoo, Foo
{
virtual void someFunc()
{
Foo::someFunc();
}
};
或:
只是出于好奇,你为什么要这么做?或者这更像是一个理论问题?我们有一个赢家。我知道这很简单!谢谢你,巴德。现在看来很明显:-/Bar是什么样的结构?包装纸?如果我给它起一个与Foo有关的名字,你会叫它什么?包装食品?我的意思是。。。这属于什么设计模式?@bikie:不知道第一个涉及多重继承的设计模式的名称,但第二个可以是adapter@Beakie这两个解决方案都是设计模式“适配器”(又名“包装器”)的实现
struct Bar : IFoo
{
Foo foo;
virtual void someFunc()
{
foo.someFunc();
}
};