考慮一個場景,其中有兩個類,即Base和Derived。如果基類要調用派生類的函數,則可以通過創建虛擬函數並在派生類中定義該VF或使用回調來實現。我想知道兩者中應該選擇哪一個?兩者之間的選擇取決於哪些情況/條件?虛擬功能與回調
編輯: 問題澄清:
我指的是所述的情況是,有其接收消息的基類。這些不同的消息將由派生類以不同方式處理,所以一種方法是創建一個虛擬函數並讓派生類實現它,通過各種開關情況處理每條消息。
另一種方法是通過模板內部的函數指針(指向派生類的函數)實現回調(需要模板來處理派生類和函數名稱的對象)。模板和函數指針將駐留在基類中。
我想你需要提供一個具體的例子來澄清你的問題,如果你仍然在尋找答案。我不明白你爲什麼需要'各種開關盒',例如選項一。通過程序設計通常有這樣的方法。在第二種選擇中,您不清楚模板的含義。你是在談論C++'templates'還是某種包含信息來識別函數指針的消息模板?更具體的東西,即使它是僞代碼也是有幫助的。 – forsvarir 2011-05-24 11:42:39
@forsvarir感謝您的回覆,我會在幾天後跟進。 – 2011-05-24 11:51:15
@forsvarir請原諒我不跟進這個話題。我***會在幾天內回到這個問題,還有其他一些問題。我完全記得它們,但是現在我的碟子上有太多菜。將很快跟進。 – 2012-04-05 07:15:17