【问题标题】:Ambiguity between IID_IDropTarget and Virtualtrees::IID_IDropTargetIID_IDropTarget 和 Virtualtrees::IID_IDropTarget 之间的歧义
【发布时间】:2011-01-15 03:37:43
【问题描述】:

我目前正在经历一个重构过程,包括以减少编译时间,我遇到了以下编译错误:

[C++ Error] some_class.cpp(53): E2015 Ambiguity between 'IID_IDropTarget' and 'Virtualtrees::IID_IDropTarget'

它指向的代码行是:

 if (iid == IID_IUnknown || iid == IID_IDropTarget)

如果我使用Virtualtrees::IID_IDropTarget,它编译得很好,但是我需要使用我已经实现的 COMs IDropTarget 接口。我认为问题可能是 Virtualtrees 组件具有 IDropTarget 接口的另一个实现,并且它们存在冲突。

有什么想法可以指定我想要Virtualtrees::IID_IDropTarget吗?还是我用于 COM 的 IID_IDropTarget 的命名空间?

【问题讨论】:

    标签: c++ com c++builder virtualtreeview


    【解决方案1】:

    在名称前加上“::” - 将其指定为 ::IID_IDropTarget - 这将有效地告诉 C++ 你想要来自全局命名空间的那个。

    【讨论】:

      【解决方案2】:

      COM 的 IID_DropTarget 声明如下:

      EXTERN_C const IID IID_IDropTarget;
      

      因为它是extern "C",所以它在根命名空间中:

      ::IID_IDropTarget
      

      【讨论】:

        猜你喜欢
        • 2023-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-02
        • 2018-08-26
        • 1970-01-01
        相关资源
        最近更新 更多