为什么编译不能通过

ameny 2003-11-12 02:46:47
#include <iostream.h>
#include <string.h>

class string
{
int size;
char *ptr;
public:
string():size(0),ptr(new char('\0')){}
string(const string &s):size(s.size)
{
ptr=new char[size+1];
strcpy(ptr,s.ptr);
}
~string(){delete [] ptr;}
friend ostream &operator<<(ostream &,const string &);
string &operator=(const char *);
};

ostream &operator<<(ostream &stream,const string &s){return (stream<<s.ptr);}

string &string::operator=(const char *chrs)
{
if(this!=&chrs)
{
delete [] ptr;
size=strlen(chrs);
ptr=new char[size+1];
strcpy(ptr,chrs);
}
return (*this);
}

int main()
{
string str;

str="Hello World";
cout<<str<<endl;

return (0);
}
...全文
18 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ameny 2004-03-18
  • 打赏
  • 举报
回复
为什么?
ameny 2004-03-10
  • 打赏
  • 举报
回复
为什么呢?
ameny 2004-03-08
  • 打赏
  • 举报
回复
borland c++ 5.5.1 for win32


error e2015 20: ambiguity between 'string' and 'std::string'

error e2015 22: ambiguity between 'string' and 'std::string'

error e2015 36: ambiguity between 'string' and 'std::string'
maoloverme1 2004-03-07
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <string.h>

class string
{
int size;
char *ptr;
public:
string():size(0),ptr(new char('\0')){}
string(const string &s):size(s.size)
{
ptr=new char[size+1];
strcpy(ptr,s.ptr);
}
~string(){delete [] ptr;}
friend ostream &operator<<(ostream &,const string &);
string &operator=(const char *);
};

ostream &operator<<(ostream &stream,const string &s){return (stream<<s.ptr);}

string &string::operator=(const char *chrs)
{
if(ptr!=chrs)
{
delete [] ptr;
size=strlen(chrs);
ptr=new char[size+1];
strcpy(ptr,chrs);
}
return (*this);
}

int main()
{
string str;

str="Hello World";
cout<<str<<endl;

return (0);
}
ameny 2004-03-07
  • 打赏
  • 举报
回复
还是不行啊,求求哪位大哥好心能改写个可以运行的完整代码贴上来,先谢过了
ameny 2003-12-22
  • 打赏
  • 举报
回复
我试试,试完了马上回来
liushu01 2003-11-21
  • 打赏
  • 举报
回复
其实,还是

if(strcmp(ptr, chrs))

比较正确
liushu01 2003-11-21
  • 打赏
  • 举报
回复
if(ptr!=chrs)
arfi 2003-11-21
  • 打赏
  • 举报
回复
你只需要强制转化一下就可以了:
if((const char *)this != chrs) //后面是chrs,而不是&chrs
ameny 2003-11-21
  • 打赏
  • 举报
回复
ameny 2003-11-16
  • 打赏
  • 举报
回复
zhanfer大哥能不能专门帮我做个不等运算重载方法
lovenoend 2003-11-12
  • 打赏
  • 举报
回复
编译后的错误信息呢??
zhanfer 2003-11-12
  • 打赏
  • 举报
回复
string &string::operator=(const char *chrs)
{
if(this!=&chrs) //this 是一个string* , chrs 是一个const char*

你并没有定义string* 与const char*的不等运算符啊。
改成这样:
if(strcmp(ptr, chrs))
{
..
}

看来你的C++没有入门啊。继续努力。

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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