私のCOMサーバーメソッドからE_NOTIMPL
またはE_NOINTERFACE
を返す必要があるかどうか、私は自分自身を混乱させました。E_NOTIMPLとE_NOINTERFACEのどちらを選択するのですか?
私は、継承したクラスからオーバーライドした2つの関数を持つクラスを持っていますが、これらの関数の両方は現時点で実際にはサポートされていないので何もしませんので、 "実装されていません"これらの関数の戻り値は何もありません。
誰もがそれぞれの使い方の経験則を持っていますか?
私のCOMサーバーメソッドからE_NOTIMPL
またはE_NOINTERFACE
を返す必要があるかどうか、私は自分自身を混乱させました。E_NOTIMPLとE_NOINTERFACEのどちらを選択するのですか?
私は、継承したクラスからオーバーライドした2つの関数を持つクラスを持っていますが、これらの関数の両方は現時点で実際にはサポートされていないので何もしませんので、 "実装されていません"これらの関数の戻り値は何もありません。
誰もがそれぞれの使い方の経験則を持っていますか?
あなたは全体のインターフェイスを実装するために失敗した場合、誰もがそのメソッドのいずれかを呼び出そうとしないように、そしてあなたのQueryInterface
が明示的に、E_NOINTERFACE
を返すことができ、またはあなただけの(それが実際に意味を持たないE_NOTIMPL
を返すことができるすべてのメソッドを作ることができますいくつかのエッジケースでこれを行う)。インターフェイスを部分的に実装する場合は、E_NOINTERFACE
を返さないでください。
クラスが要求されたインタフェースの完全な実装を提供しない場合は、E_NOINTERFACEを返します。クラスがインタフェース関数のボディ/ロジックを実装していない場合は、E_NOTIMPLを返します。
あなたは(正式に)インターフェイスを実装するので、E_NOINTERFACE
はあなたのためではありません。有用に実装されていないメソッドがあるので、E_NOTIMPL
を返す必要があります。