使用抽象基类在c ++中进行多重继承

时间:2018-06-15 14:19:43

标签: c++

我正在尝试从两个抽象基类派生一个类。

#include <stdio.h>

class A
{
public:
    virtual void Method(void) = 0;
};

class B
{
public:
    virtual void Method(void) = 0;
};

class C: public A, public B
{
public:
    virtual void Method(void);
};

void C::A::Method(void)
{
    printf("C::A::Method\r\n");
}

void C::B::Method(void)
{
    printf("C::B::Method\r\n");
}

C test;

如果我尝试编译,链接器会收到以下错误:

  

未定义引用`vtable for C'

如果我将C类的声明改为

class C: public A, public B
{
public:
    virtual void A::Method(void);
    virtual void B::Method(void);
};

编译器出现以下错误:

  

无法在'C'

中声明成员函数'A :: Method'      

无法在'C'

中声明成员函数'B :: Method'

我想要实现的是让C为抽象接口A和B提供实现。有人知道如何做对吗? 感谢。

0 个答案:

没有答案