2012-06-18 20 views
5

我已成功地迷惑自己,我是否應該從我的COM服務器方法返回E_NOTIMPLE_NOINTERFACE如何E_NOTIMPL和E_NOINTERFACE之間進行選擇?

我有一個類有兩個函數,我從我繼承的類重寫,這兩個函數什麼都不做,因爲他們現在還沒有真正支持,所以我問我應該使用「未實現」還是「沒有接口「這些函數返回值?

沒有人有時候使用一般的經驗法則?

回答

6

如果無法實現整個接口,那麼你的QueryInterface可以明確地返回E_NOINTERFACE,這樣就沒有人試圖調用它的任何方法,或者你可以只讓所有的方法可以返回E_NOTIMPL(它實際上意義在一些邊緣情況下做到這一點)。如果你部分實現了一個接口,那麼你根本不應該返回E_NOINTERFACE

3

如果一個類不提供請求的接口返回E_NOINTERFACE的完整實現。如果一個類沒有實現接口函數的主體/邏輯,則返回E_NOTIMPL。

2

你做的(正式)實現接口,所以E_NOINTERFACE是不適合你。這種事,你有沒有方法來實現有效,所以你應該返回E_NOTIMPL

相關問題