如何避免继承冲突

ABC*_*lus 0 c++ inheritance multiple-inheritance

在我的C++程序中,我有两个类(B1和B2),它们有自己的方法,但有1个("意外").例如:

B1类标题:

void height();
void size();
void enabled();
Run Code Online (Sandbox Code Playgroud)

B2级标题:

void width();
void length();
void enabled();
Run Code Online (Sandbox Code Playgroud)

现在我有一个继承自B1和B2的A类.由于enabled()多重继承后方法中存在"冲突",我该如何避免这种情况?有没有办法从继承中排除方法?例如,我可以enabled()从B1类中排除继承(我不能将其设置为私有,因为它是从B1派生的其他类中使用的).还有其他想法吗?

ixS*_*Sci 5

你可以解决歧义,但无论如何你都会继承这两种功能.你无法选择不继承某些功能.要解决歧义,请使用以下内容:

class B1
{
public:
    void height();
    void size();
    void enabled();
};

class B2
{
public:
    void width();
    void length();
    void enabled();
};

class A: public B1, public B2
{
public: 
    using B2::enabled;
};
Run Code Online (Sandbox Code Playgroud)