---------好奇怪,为什么赋值不上??----------

ssfeng 2001-08-29 04:26:23
程序如下:
void CArraytestDlg::OnButton3()
{
CString* aa=new CString;
*aa="kk";

Test3((unsigned short**)aa);
MessageBox(*aa);
}

void CArraytestDlg::Test3(BSTR *aa)
{
CString bb="asdfasfd";
(CString)*aa=bb;
}

当OnButton3() 时候,aa的值该改变的,为什么运行的结果aa的值仍就是“kk”呢??
应该如何把aa的值在Test3(BSTR *aa)中正确改变?

Test3中的参数aa类型一定是BSTR*,不能用其他的。



...全文
89 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssfeng 2001-08-29
  • 打赏
  • 举报
回复
这下彻底解决了。james_razor你的方法的确ok! ActiveX中也能用!
ActiveX中出问题,是由于我在外部调用时候,没有把变量占内存。是外部的问题。这个方法本身没问题!
Thanks
ssfeng 2001-08-29
  • 打赏
  • 举报
回复
哈哈:)

话说回来,如果针对这个问题的话,就是解决了。可是我定的方法其实是在ActiveX中的。如果这么调用的话,导致外部调用这个ActiveX的这个方法时,内存出错 :(

趁热打铁,james_razor可否帮我看看,详细的我贴在了[Visual C++]版内,相同标题的就是。
先谢谢了!
james_razor 2001-08-29
  • 打赏
  • 举报
回复
*aa是指针?
(CString)*aa用这个指针产生一个临时对象
(CString)*aa = bb赋值。
然后临时对象被抛弃。
kao,你把人家抛弃了还来问我为什么,我要讨回公道。法官大人,我要求将犯人严刑拷打,审问他到底抛弃多少良家妇女。
ssfeng 2001-08-29
  • 打赏
  • 举报
回复
解决了!!
谢谢各位!
谢谢james_razor!!!(分数已经给出)

不过真想知道为什么 :)
james_razor 2001-08-29
  • 打赏
  • 举报
回复
*((CString *)aa)=bb;
不要问我为什么!
ssfeng 2001-08-29
  • 打赏
  • 举报
回复
好像不行。
“显示调用”是怎么的调用?能稍微说得详细点吗?我不是很明白你的意思 ~_~
谢谢。
xboy 2001-08-29
  • 打赏
  • 举报
回复
up:是显式调用Test3();我打掉了一个字
xboy 2001-08-29
  • 打赏
  • 举报
回复
当然不能改变呀!。如要改变你得显式调用Test()呀,你试试吧,错不了!!

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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