C++ 多继承,对不同基类的同名纯虚函数进行覆盖

例如classAA{public:virtualvoidabmethod()=0;}classBB{public:virtualvoidabmethod()=0;}cla... 例如
class AA
{
public:
virtual void abmethod() = 0;
}
class BB
{
public:
virtual void abmethod() = 0;
}
class CC : public AA , public BB
{
void abmethod()
{
std::cout << "abmethod of CC" << endl;
}
}

我的实测情况是 编译器会在BB类中的函数定义处提示错误
如何解决这样的情况呢?
展开
 我来答
仙戈雅3n
2013-12-27 · TA获得超过5790个赞
知道大有可为答主
回答量:2398
采纳率:75%
帮助的人:901万
展开全部
#include <iostream>
class AA
{
public:
    virtual void abmethod(void) =0; // 声明纯虚函数
}; // 类的尾部需要有分号
class BB
{
public:
    virtual void abmethod(void) =0;
}; // 同上

class CC:virtual public AA,virtual public BB // 将直接基类声明为虚基类
{
public: // 需要AA和BB的直接派生类CC中的纯虚函数声明为public,这样派生类外部方可访问它.
    virtual void abmethod(void)
    {
        std::cout<<"abmethod of CC"<<std::endl;
    }
}; // 同上

int main()
{
    CC c,*p;
    p=&c;
    p->abmethod();
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
2013-12-27 · TA获得超过8610个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3486万
展开全部

/*

abmethod of CC

Press any key to continue

*/

#include <iostream>
using namespace std;

class AA {
public :
virtual void abmethod() = 0;
}; 

class BB {
public :
virtual void abmethod() = 0;
};

class CC : public AA , public BB {
public :
void abmethod() {
std::cout << "abmethod of CC" << endl;
}
};

int main() {
CC c;
c.abmethod();
return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式