2016-05-23 99 views
0

所以我想用特質類來實現我的合同類,這有可能嗎?因爲我得到了一些錯誤,當我編譯這個下面的代碼:C++。爲什麼我不能使用trait類實現接口?

代碼:

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

MyClass沒有實現在MyContract父類的純虛方法。僅僅因爲它也繼承自TraitClass並不意味着TraitClassfoo()即將實施它。

您需要連接點:

class MyClass : public virtual MyContract, public TraitClass { 


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

我雖然我可以用這種方法得到了更乾淨的代碼。不管怎樣,謝謝你。 – Nugraha

相關問題