我已成功地迷惑自己,我是否應該從我的COM服務器方法返回E_NOTIMPL
或E_NOINTERFACE
。如何E_NOTIMPL和E_NOINTERFACE之間進行選擇?
我有一個類有兩個函數,我從我繼承的類重寫,這兩個函數什麼都不做,因爲他們現在還沒有真正支持,所以我問我應該使用「未實現」還是「沒有接口「這些函數返回值?
沒有人有時候使用一般的經驗法則?
我已成功地迷惑自己,我是否應該從我的COM服務器方法返回E_NOTIMPL
或E_NOINTERFACE
。如何E_NOTIMPL和E_NOINTERFACE之間進行選擇?
我有一個類有兩個函數,我從我繼承的類重寫,這兩個函數什麼都不做,因爲他們現在還沒有真正支持,所以我問我應該使用「未實現」還是「沒有接口「這些函數返回值?
沒有人有時候使用一般的經驗法則?
如果無法實現整個接口,那麼你的QueryInterface
可以明確地返回E_NOINTERFACE
,這樣就沒有人試圖調用它的任何方法,或者你可以只讓所有的方法可以返回E_NOTIMPL
(它實際上意義在一些邊緣情況下做到這一點)。如果你部分實現了一個接口,那麼你根本不應該返回E_NOINTERFACE
。
如果一個類不提供請求的接口返回E_NOINTERFACE的完整實現。如果一個類沒有實現接口函數的主體/邏輯,則返回E_NOTIMPL。
你做的(正式)實現接口,所以E_NOINTERFACE
是不適合你。這種事,你有沒有方法來實現有效,所以你應該返回E_NOTIMPL
。