下面的代码对马?错在哪?请帮我修改成正确的,谢谢struct G_str {
CString a;
CString b; 
};main()
{
    G_str str1;
    GetStr( &str1 );
}void GetStr( G_str *str )
{
    G_str str1;
    str1.a="aa";
    str1.b="bb";
    *str=str1;
}

解决方案 »

  1.   

    應該是你用了stuct,所以G_str沒有拷貝構造函數,編譯器不知道=號怎么對你的結構成員賦值。
    或者重寫 = 號運算符也行
      

  2.   

    yebeans 你说的太专业了,听不懂,呵呵
    你就在我代码的基础上改成正确的,我就能看明白了
      

  3.   

    void   GetStr(   G_str   *str   ) 

            str->a="aa"; 
            str->b="bb"; 

      

  4.   

    luohongming 
    G_str   str1; 不能省略,要对他做一些处理,处理完后的结果,赋给str
      

  5.   

    void   GetStr(   G_str   *str   ) 

            G_str   str1; 
            //对str1处理,省略        str->a=str1.a; 
            str->b=str1.b; 

      

  6.   

    或者给G_str添加=重载,类似于拷贝构造函数:
    struct   G_str{ 
    CString   a; 
    CString   b;  
    void operator = (G_str& g_str)
    {
    a = g_str.a;
    b = g_str.b;
    }; 
    }; void       GetStr(G_str *str)   
    {   
        G_str       str1;   
        //对str1处理,省略     *str = str1;     
    }
      

  7.   

    const struct G_str& operator =(const struct G_str& g_str) 

       a   =   g_str.a; 
       b   =   g_str.b; 
       return *this;
    };   
      

  8.   

    简单的办法就是全部赋值一遍啊.
    void   GetStr(   G_str   *str   ) 

            G_str   str1; 
            str1.a="aa"; 
            str1.b="bb"; 
            .......
            srt->a = str1.a;
            str->b = str1.b;
    }