質問

私はいくつかの従来のC ++コードで働いていると私はインターフェイスを拡張する必要があります。現在のインタフェースは、例えば次のとおり

[
  object,
  uuid(guid),
  version(1.0),
  dual,
  nonextensible,
  oleautomation
]
interface IInfo : ITask {
   // Methods here
}

[
  object,
  uuid(guid),
  version(1.0),
  dual,
  nonextensible,
  oleautomation
]
interface IExtendedInfoTask : IInfo {
   // Methods here
}

私は何を拡張したいことはIInfoインタフェースです。今、私の理解から、これを行うための適切な方法は、IInfoインタフェースを継承しIInfo2インターフェースを作成することです、しかし、私は私のIExtendedInfoTaskこのIInfo2から継承する必要があります。現在の継承を変更すると、既存のインタフェースを破るだろう、それはない?

これを行うための適切な方法は、IInfo2を拡張し、IExtendedInfoTaskの方法を複製することIExtendedInfoTaskを作成することでしょうか?

役に立ちましたか?

解決

これを行うための適切な方法は、新しいIInfo2インタフェースを拡張IExtendedInfoTask2を作成することです。 COMは、一度定義されたインタフェースは、不変であることが必要です。

あなたはIExtendedInfoTaskとIExtendedInfoTask2の両方を実装する同じクラスを持つことができるので、呼び出し側は、バージョンのいずれかを使用することができます。それが唯一のvtableの違いだ - あなたは個別のメソッドを実装する必要はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top