C ++。为什么我不能使用trait类实现接口?

时间:2016-05-23 01:11:42

标签: c++ arduino

所以我想使用特质类来实现我的契约类,这可能吗?因为我在编译以下代码时遇到了一些错误:

代码:

class MyContract {
public:
    virtual void foo()=0;
};

class TraitClass {
public:
    void foo()
    {
        Serial.println("hello");
    }
};

class MyClass : public virtual MyContract, public TraitClass {
    // MyClass stuff here.
};

void setup()
{
    MyClass* myClass = new MyClass();
    myClass->foo();
}

1 个答案:

答案 0 :(得分:1)

MyClass未实现MyContract超类中声明的纯虚方法。仅仅因为它也继承自TraitClass并不意味着TraitClass' s foo()将会实现它。

你需要连接点:

class MyClass : public virtual MyContract, public TraitClass {


    void foo() override
    {
         TraitClass::foo();
    }
};