我正在学习 C++,在学校作业中我必须使用菱形结构,即使它不完全正确。
class Book
{
public:
virtual int getPurchasePrice() const;
protected:
int m_purchasePrice;
};
class AdultBook: virtual public Book{} ;
class ChildrenBook: virtual public Book{} ;
class ComicBook: public AdultBook, public ChildrenBook {} ;
(我删除了所有方法和构造函数以简化)
现在,如果我想创建一本漫画书并知道它的购买价格,我该怎么办?如果我在 ComicBook 上执行 getPurchasePrice(),则会收到以下错误:
error: request for member 'getPurchasePrice' is ambiguous
我认为为 ChildrenBook 和 AdultBook 设置虚拟可以解决歧义?