C++一道程序,没有与这些操作数匹配的"[]"运算符 5
#include<iostream>#include<string>usingnamespacestd;classString{public:String(){p=NUL...
#include <iostream>
#include <string>
using namespace std;
class String
{
public:
String() { p=NULL;}
String(char *str){ p=str; };
friend bool operator>(String &str1,String &str2);
friend bool operator<(String &str1,String &str2);
friend bool operator==(String &str1,String &str2);
String& operator=(const String &s){};
void display();
int getlen()const { return len;}
private:
char *p;
int len;
};
void String::display()
{ cout<<p;}
bool operator>(String &str1,String &str2)
{
if(strcmp(str1.p,str2.p)>0)
return true;
else
return false;
}
bool operator<(String &str1,String &str2)
{
if(strcmp(str1.p,str2.p)<0)
return true;
else
return false;
}
bool operator==(String &str1,String &str2)
{
if(strcmp(str1.p,str2.p)==0)
return true;
else
return false;
}
String& String::operator=(const String &s)
{
if(this==&s)
return *this;
else
{
delete []p;
len=s.getlen();
p=new char[len+1];
for(int i=0;i<len;i++)
{
p[i]=s[i];//这里就说没有与这些操作数匹配的"[]"运算符,可是赋值运算符不是重载了吗为什么还不行?
}
p[len]='\0';
}
return *this;
} 展开
#include <string>
using namespace std;
class String
{
public:
String() { p=NULL;}
String(char *str){ p=str; };
friend bool operator>(String &str1,String &str2);
friend bool operator<(String &str1,String &str2);
friend bool operator==(String &str1,String &str2);
String& operator=(const String &s){};
void display();
int getlen()const { return len;}
private:
char *p;
int len;
};
void String::display()
{ cout<<p;}
bool operator>(String &str1,String &str2)
{
if(strcmp(str1.p,str2.p)>0)
return true;
else
return false;
}
bool operator<(String &str1,String &str2)
{
if(strcmp(str1.p,str2.p)<0)
return true;
else
return false;
}
bool operator==(String &str1,String &str2)
{
if(strcmp(str1.p,str2.p)==0)
return true;
else
return false;
}
String& String::operator=(const String &s)
{
if(this==&s)
return *this;
else
{
delete []p;
len=s.getlen();
p=new char[len+1];
for(int i=0;i<len;i++)
{
p[i]=s[i];//这里就说没有与这些操作数匹配的"[]"运算符,可是赋值运算符不是重载了吗为什么还不行?
}
p[len]='\0';
}
return *this;
} 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询