所以我想使用特质类来实现我的契约类,这可能吗?因为我在编译以下代码时遇到了一些错误:
代码:
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();
}
答案 0 :(得分:1)
MyClass
未实现MyContract
超类中声明的纯虚方法。仅仅因为它也继承自TraitClass
并不意味着TraitClass
' s foo()
将会实现它。
你需要连接点:
class MyClass : public virtual MyContract, public TraitClass {
void foo() override
{
TraitClass::foo();
}
};