回 帖 发 新 帖 刷新版面

主题:重载一个类的输入运算符报错了,,求助~!

下面是个简单的代码。。。无报错但运行时输入字符串后就提示:*******指令引用的内存********不能为wriiten第一次遇到这个问题,新手求助~!


#include <iostream.h>
class C
{public:
    char * str;

friend     istream & operator>>(istream &,C &);

};


istream & operator>>(istream & cin,C & c)
{cin>>c.str;return cin;}

int main()
{  C cc;
   cc.str="aaa"; 
   cout<<cc.str;
   cout<<"ds";
   cin>>cc;  
   cout<<cc.str;

   return 0;
 
}

回复列表 (共2个回复)

沙发

#include <iostream.h>
class C
{public:
    char * str;

friend     istream & operator>>(istream &,C &);

};


istream  &operator>>(istream &in,C & c)
{
    in>>c.str;
    return in;
}

int main()
{  C cc;
   cc.str="aaa"; 
   cout<<cc.str;
   cout<<"ds";
   cc.str=new char[10];
   cin>>cc;  
   cout<<cc.str;

   return 0;
 
}
你没有给str分配内存,所以报错

板凳

楼上正解,在C中的构造函数应该分配内存给指针str

我来回复

您尚未登录,请登录后再回复。点此登录或注册