Kyl*_*yle 1 c++ com idl interface
我正在使用一些遗留的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
}
Run Code Online (Sandbox Code Playgroud)
我想扩展的是IInfo接口.现在根据我的理解,正确的方法是创建一个继承IInfo接口的IInfo2接口,但是我需要我的IExtendedInfoTask继承这个IInfo2.改变它的当前继承会破坏现有的接口吗?
这样做的正确方法是创建一个IExtendedInfoTask来扩展IInfo2并复制IExtendedInfoTask的方法吗?
正确的方法是创建一个扩展新IInfo2接口的IExtendedInfoTask2.COM要求接口一旦定义,就是不可变的.
您可以使用相同的类实现IExtendedInfoTask和IExtendedInfoTask2,因此调用者可以使用任一版本.它只是一个vtable差异 - 您不必单独实现这些方法.