这个错误是什么意思?

UPCCPU 2003-12-07 11:34:52
d:\ATL\ATL002EXEPtr\ATL002EXEPtrDlg.h(35) : error C2970: “ATL::CComQIPtr” : 模板参数“piid” : “IID_IPeople” : 涉及带有内部链接的对象的表达式不能用作非类型参数
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlcomcli.h(503) : 参见“ATL::CComQIPtr”的声明
d:\ATL\ATL002EXEPtr\_ATL002_i.h(73) : 参见“IID_IPeople”的声明

就是定义了:CComQIPtr<IPeople,&IID_IPeople> m_IPeoplePtr;出的问题
如果将IID_IPeople改为IID_IUnknown就没有问题了,不知为什么?
...全文
79 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
guanjinke 2003-12-08
  • 打赏
  • 举报
回复
IID_IPeople,并不是你手动定义的,它是一个接口ID,当你插入ATL 对象时,也就是People接口时,系统为你自动定义了IID_IPeople,你可以到CPeople头文件里找到。
UPCCPU 2003-12-08
  • 打赏
  • 举报
回复
我已经定义了IID_IPeople,编译器产生的文件,我包含进去了,也是这个错误
后来我就从文件中拷过来,把它的定义直接写在前边,也是这个错误
ruihuahan 2003-12-08
  • 打赏
  • 举报
回复
编译器没找到IID_IPeople的定义
guanjinke 2003-12-08
  • 打赏
  • 举报
回复
CComQIPtr<IPeople,&IID_IPeople> m_IPeoplePtr(Used to initialize the interface pointer);注意括号里的东西。在CComQIPtr的构造函数里应该传递一个被用来初始化的指针接口。
UPCCPU 2003-12-08
  • 打赏
  • 举报
回复
guanjinke(纶巾客):对啊,IID_IPeople就是自动生成的,CComQIPtr第二个模板参数需要接口的IID,我现在使用的就是IPeople的IID啊,怎么就不对呢?

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧