C++ 多重继承中重写函数的语法

C++ 多重继承中重写函数的语法,c++,multiple-inheritance,C++,Multiple Inheritance,如何覆盖func1?或者你能给它下个定义吗 class A { protected: void func1() //DO I need to call this virtual? }; class B { protected: void func1() //and this one as well? }; class Derived: public A, public B { public: //here define func1 where i

如何覆盖func1?或者你能给它下个定义吗

class A
{
   protected:
    void func1() //DO I need to call this virtual?
};

class B
{
   protected:
    void func1() //and this one as well?
};

class Derived: public A, public B
{
    public:

    //here define func1 where in the code there is
    //if(statement) {B::func1()} else {A::func1()}
};
没有任何虚拟或覆盖?我不理解它的可访问性。谢谢你。

莱纳德·李

若要重写,只需使用相同的名称声明函数,若要实现代码注释中的功能,需要将一个变量传递给派生的func1()

例如:

class Derived: public A, public B
{
    public:

    void func1()
};
#包括
使用名称空间std;
甲级
{
受保护的:
void func1(){coutLeonard Lie

若要重写,只需使用相同的名称声明函数,若要实现代码注释中的功能,需要将一个变量传递给派生的func1()

例如:

class Derived: public A, public B
{
    public:

    void func1()
};
#包括
使用名称空间std;
甲级
{
受保护的:

void func1(){这不是和你几分钟前问的几乎相同的问题吗?是的,但它是针对变量而不是函数的。这个问题要求重写函数。但无论如何,我不明白你的问题。你不能在类定义中使用if语句,对吗?嗯,为什么?根据条件或状态,我们可以从a或b中的func1对吗?@Zaibi很抱歉发送垃圾邮件,但如果您处理此类案件较多,您应该查找“钻石问题”,因为您的案件正在接近它。使用
virtual
在这方面对您没有帮助(afaik)因为它只是告诉我们必须使用基类或派生类,但由于基类同时具有这两种方法,我猜使用virtual甚至可能是错误的。(如果我错了,请纠正我)这不是和你几分钟前问的问题差不多吗?是的,但它是针对变量而不是函数的。这个问题要求重写函数。但无论如何,我不明白你的问题。你不能在类定义中使用if语句,可以吗?嗯,为什么?根据条件或状态,我们可以从or func调用func11从b开始,对吗?@Zaibi很抱歉发垃圾邮件,但是如果你在处理此类案件,你应该查找“钻石问题”,因为你的案件正在接近它。使用
virtual
在这里对你没有帮助(afaik)因为它只是告诉我们必须使用基类或派生类,但由于基类同时具有这两种方法,我猜使用virtual甚至可能是错误的。(如果我错了,请纠正我)谢谢。这回答了我的问题。谢谢。这回答了我的问题。