不要返回函数里的临时变量的指针,不要这样用了。
最好自在函数里CString *aa = new CString 再 return (CString*)aa;
如果非要用数组,那就先new一个CString 的指针数组,再逐个new CString, 然后return.

解决方案 »

  1.   

    就是说,我用个static的就可以了?
      

  2.   

    补充一下,函数返回后,临时变量都不存在了,你的例子甚至连以前讨论过的类的得copy都不是。不要这样用。
      

  3.   

    谢谢z_sky(),是的,临时变量在退出函数是,就消失掉了,返回个屁指针啊!
    ^_^,谢谢
      

  4.   

    CString* test(){
        CString aa[10]={"1","2","3","4","5","6","7","8","9","0"};
        cout<<(LPCTSTR)aa[0]<<endl;    这里是对的,打印出“1”
        return (CString*)aa;
    }在这个函数中数组aa[10]是局部变量,他的生存期只在本函数中,在函数外是无法访问他的内容的
    所以你在函数外得到的地址中的内容是错误的,可以将aa[10]声明成全局变量或用new分配.
    如:
    CString aa[10]={"1","2","3","4","5","6","7","8","9","0"};
    CString* test(){
        cout<<(LPCTSTR)aa[0]<<endl;    这里是对的,打印出“1”
        return (CString*)aa;
    }
    就OK了.
      

  5.   

    请问老兄学VC++多长时间了,我刚看完一遍深入浅出MFC,还有C++核心
    大概两三个月吧,太难了