CString类直接赋值问题,请大家帮忙检查一下是什么问题?

newhand 2011-06-30 05:29:36
我写了下面一段程序
Class A
{
protected:
CString str;
public:
void setstr(CString s)
{
str=s;
}
}

在另一个函数中
void fun()
{
A a;
a.setstr(_T("abcd"));
}
当执行到类的成员函数对str赋值总是会在这里出现中断
CStringData* GetData() const throw()
主要是在str=s这个赋值语句上
str.Format(_T("%s"),s);这个方法也试过了,出现相同的结果,请大家帮我查一下原因,谢谢!
...全文
304 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
C罗混在Windows 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 newhand 的回复:]
就猜到是这个原因呀,但是初始化比较困难,情况比较多,代码比较难写
[/Quote]可以在fun外部new一个全局的A对象然后传指针,所有地方都用这个指针,最后delete掉
shiyunqiang 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 c_losed 的回复:]

C/C++ code

void fun()
{
A *a = new A;
a->setstr(_T("abcd"));
}
[/Quote]

正解。
wtbike 2011-07-01
  • 打赏
  • 举报
回复
晕~~
q1q2q3q4ln 2011-07-01
  • 打赏
  • 举报
回复
void fun()
{
A *a = new A;
a->setstr(_T("abcd"));
}

哈哈,就是这个原因
cabinriver 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 newhand 的回复:]

不好意思,是有一点不同,我搞错了一点,
void fun()
{
A *a;
a->setstr(_T("abcd"));
}
我是建立了一个指针,我也试过了不用指针是可以的,但是用指针就不行了,但是我必须用指针
[/Quote]

哪有这样用指针的,多看看书吧,最基础的东西这是



void fun()
{
A *a = new A;
a->setstr(_T("abcd"));
}
simoreg 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 newhand 的回复:]
就猜到是这个原因呀,但是初始化比较困难,情况比较多,代码比较难写
[/Quote]
你连变量都不分配,如何让编译器知道你操作的是什么??


void fun(A &a)
{
a.setstr(_T("abcd"));
}
这样如何?
clown 2011-06-30
  • 打赏
  • 举报
回复
指针没有分配空间
newhand 2011-06-30
  • 打赏
  • 举报
回复
就猜到是这个原因呀,但是初始化比较困难,情况比较多,代码比较难写
c_losed 2011-06-30
  • 打赏
  • 举报
回复

void fun()
{
A *a = new A;
a->setstr(_T("abcd"));
}
c_losed 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 newhand 的回复:]

不好意思,是有一点不同,我搞错了一点,
void fun()
{
A *a;
a->setstr(_T("abcd"));
}
我是建立了一个指针,我也试过了不用指针是可以的,但是用指针就不行了,但是我必须用指针
[/Quote]
指针没初始化 木有分配空间
newhand 2011-06-30
  • 打赏
  • 举报
回复
不好意思,是有一点不同,我搞错了一点,
void fun()
{
A *a;
a->setstr(_T("abcd"));
}
我是建立了一个指针,我也试过了不用指针是可以的,但是用指针就不行了,但是我必须用指针
feimashenhua 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yaozhiyong110 的回复:]

不信 你自己建个新工程试试...
[/Quote]
同意,本段代码是没有问题的。
yangkangyou123 2011-06-30
  • 打赏
  • 举报
回复
帮你写了个例子,测试了一下,没出现异常
看来是其他地方引起的.
Eleven 2011-06-30
  • 打赏
  • 举报
回复
Debug下call stack看函数调用堆栈吧
W1nds 2011-06-30
  • 打赏
  • 举报
回复
从程序上来看应该没问题吧
橘子 2011-06-30
  • 打赏
  • 举报
回复
VC6.0下一摸一样的代码测试过没有问题...
yaozhiyong110 2011-06-30
  • 打赏
  • 举报
回复
不信 你自己建个新工程试试...
yaozhiyong110 2011-06-30
  • 打赏
  • 举报
回复
你把自己的代码贴出来 你这样的描述肯定没问题...
lflljt 2011-06-30
  • 打赏
  • 举报
回复
不是太明白,等高手
newhand 2011-06-30
  • 打赏
  • 举报
回复
编译没有问题,只是出现中断CStringData* GetData() const throw()
加载更多回复(6)

16,472

社区成员

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

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

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