崩溃,一个数据类型怎么就出错?(在线等)

hufeikong 2009-09-17 04:58:11
用atl向导做组件,就添加了一个方法:实验目的是输出一个字符串

STDMETHODIMP CgetPwd::getTest(VARIANT *p)
{
*p.vt=VT_BSTR;
*p.bstrVal=SysAllocString(L"Hello,你好");
return S_OK;
}

编译时出现下列错误:
F:\webroot\kjmCom\getPwd.cpp(30) : error C2228: left of '.vt' must have class/struct/union type
F:\webroot\kjmCom\getPwd.cpp(31) : error C2228: left of '.bstrVal' must have class/struct/union type

以为缺少头文件,搜索百度和google,资料奇少

看到有人写加#include <OAIDL.H>或#include <comdef.h>,

都加了,结果没用.
...全文
62 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
TianYiXiang 2009-09-17
  • 打赏
  • 举报
回复
VariantInit(p);
使用VARIANT 变量之前一定要初始化!
hufeikong 2009-09-17
  • 打赏
  • 举报
回复
haha 是了,谢谢
tntlei 2009-09-17
  • 打赏
  • 举报
回复
你把“*p.” 改成“p->”试试
飞天御剑流 2009-09-17
  • 打赏
  • 举报
回复
成员运算符优先级比间接运算符要高,那两句赋值要改为这样:

( *p ).vt=VT_BSTR;
( *p ).bstrVal=SysAllocString(L"Hello,你好");


或者

p->vt=VT_BSTR;
p->bstrVal=SysAllocString(L"Hello,你好");

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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