我写了下面一段程序
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);这个方法也试过了,出现相同的结果,请大家帮我查一下原因,谢谢!

解决方案 »

  1.   

    void setstr(CString s)
      {
      str=s;
      }
    调试看一下看看s值是多少
      

  2.   

    编译没有问题,只是出现中断CStringData* GetData() const throw()
      

  3.   

    Debug下call stack看函数调用堆栈吧
      

  4.   

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

  5.   


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

  6.   

    你连变量都不分配,如何让编译器知道你操作的是什么??
    void fun(A &a)
    {
      a.setstr(_T("abcd"));
    }
    这样如何?
      

  7.   


    哪有这样用指针的,多看看书吧,最基础的东西这是void fun() 
    {
     A *a = new A;
     a->setstr(_T("abcd")); 

      

  8.   

    可以在fun外部new一个全局的A对象然后传指针,所有地方都用这个指针,最后delete掉
      

  9.   

    void fun()
    {
        A *a = new A;
        a->setstr(_T("abcd"));
    }哈哈,就是这个原因