但是据我了解,COM在内存中的结构和C++的纯虚函数是一样的,对于一个C++的纯虚类来说,各成员函数的说明位置会影响类的VTable。COM就不会吗?
解决方案 »
- sdk读取位图中数据?
- 在ClassWizard关联CEdit添加变量时可以同时关联外部属性,在VS中怎么办??
- 如何将对话框的某个控件置顶
- 请VC高手帮帮忙,3Q!
- [S] 使用了IE控件的程序,当查看使用了ActiveX的页面时,IE提示是否允许与控件交互。请问怎样才能不出现这个对话框,直接允许交互?
- 关于用做图表的问题,除了MS CHART
- 推荐基本学习vc首先需要看的书??
- 怎样改变ListCtrl行的高度
- 低价出售Component One 8.0 VB/VC 豪华编程套件
- 高分求助,ADO与DBF数据库
- socket编程,如何设置客户端连接超时时间?
- 谁知道win98 ddk 哪里能找到,盗版能找到么?
两个工程生成的两个不同的COM有不同的QueryInterface.这两个QueryInterface恐怕不允许你混用两个接口.可能你必须使用原定义的接口得到接口指针,然后强行类型转换到另一个接口指针.但这是相当危险的.
另外:两个接口如果仅仅是虚函数及其参数相同,并不能认为是一致的.应为如果接口之间发生了继承等关系时,即使其他程序看来接口的虚函数表里的所有表象都一样,但实质上是不同的.
interface A
{
X();
};interface B : A
{
Y();
};interface C
{
X();
Y();
};C与B的虚函数表看来是一样的,担不是相同的接口.
个人意见,仅供参考
interface A()
{
X();
Y();
};
interface B()
{
Y();
X();
};
另外,在这两个工程中,除以上的不同和CLS_ID, IID不同外,其它一切都相同的话,两个COM能互相替代吗?BTW: 我决定把这个问题的分提高到150(另开贴给分),因为我觉得这个问题值得研究,如果必要我还要提,欢迎COM高手来解惑
给分!
因为那样做是看起来很明智,但实际上是让人受罪!
参考《深入浅出MFC》