正如您很快就會看到的,我不是 C 開發人員,對于這個問題,我正在研究 C 是我唯一的選擇。我不介意學習,所以只是一些指導將不勝感激。
我有一個面板類如下:
class Panel {
... // Methods that implement Panel
virtual void draw() = 0;
... // Other methods to implement Panel
}
我想要兩個品種,所以我創建了兩個介面
class Foo {
virtual void foo() = 0;
}
class Bar: public Foo {
virtual void bar() = 0;
}
我想將 Foo 的實作類傳遞給其他類,并讓它們只能呼叫方法 foo,Bar 也是如此。
在其他語言中,我可以創建實作 Foo 的類:
class FooPanel : public Panel, implements Foo{ ... }
或者
class BarPanel : public Panel, implments Bar { ... }
然后我可以傳入一個方法:
//method(..., foo* pFoo, ...); the signature
method(..., (Foo*)&barPanel, ...);
我能看到在 C 中完成此操作的唯一方法是:
class FooPanel : public Panel {
virtual void foo() = 0;
}
然后必須通過整個 Panel 并且實作者能夠呼叫 Panel 方法。
我在哪里可以了解如何做到這一點?
uj5u.com熱心網友回復:
其他語言(如java)所稱的“介面”只是C 中的一個抽象基類。因此,如果您只是將implements關鍵字替換為public virtual,它將按您的預期作業:
class FooPanel : public Panel, public virtual Foo { ... }
class BarPanel : public Panel, public virtual Bar { ... }
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/420591.html
標籤:
下一篇:候選模板被忽略:無法將'function<type-parameter-0-0()>'與'double(*)()'匹配
