并行 class 层次结构 C++ 以抽象形式结束 class
Parallel class hirarchy c++ ends up in abstract class
为什么这个简单的 class 层次结构以抽象的 class B 结尾?在这种情况下,我不知道要搜索的流行语。 (也许是钻石问题?)
class I_A
{
virtual void foo() = 0;
};
class I_B : public I_A
{
virtual void bar() = 0;
};
class A : public I_A
{
void foo() override {}
};
class B: public A, public I_B
{
void bar() override {}
};
B b; ///< Compiler says it is abstract
看起来 B 继承自 A,A 继承自 I_B,A 继承自 I_A。 B也继承自I_B,后者继承自I_A.
diamond inheritance problem
是要搜索的关键字,因为您以两种不同的方式继承了同一事物。 Stroustrup 提到了这一点以及如何操作的示例。
为什么这个简单的 class 层次结构以抽象的 class B 结尾?在这种情况下,我不知道要搜索的流行语。 (也许是钻石问题?)
class I_A
{
virtual void foo() = 0;
};
class I_B : public I_A
{
virtual void bar() = 0;
};
class A : public I_A
{
void foo() override {}
};
class B: public A, public I_B
{
void bar() override {}
};
B b; ///< Compiler says it is abstract
看起来 B 继承自 A,A 继承自 I_B,A 继承自 I_A。 B也继承自I_B,后者继承自I_A.
diamond inheritance problem
是要搜索的关键字,因为您以两种不同的方式继承了同一事物。 Stroustrup 提到了这一点以及如何操作的示例。