我写了一个自定义字符串类。 我想用它来设置STL。我有重载运算符< 但它仍然给我提问
error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const String' (or there is no acceptable conversion)
1> could be 'String &String::operator =(const String &)'
1> 'String &String::operator =(const char *)'
1> 'String &String::operator =(const wchar_t *)'
1> while trying to match the argument list '(const String, const String)'
我猜,它要求重载operator =(const String,const String)
但是不可能创建这样一个重载函数
我的String类是这个
String ();
String (const char * pStr);
String (const long int pData);
String (const double pData);
String (const int pData);
String (const wchar_t * pStr);
//Copy Constructors
String (const String& rhs);
String (const String& rhs, const int pStartIndex, const int pNumChar);
//Overloaded Operators
String & operator= (const String & rhs);
String & operator= (const char * rhs);
String & operator= (const wchar_t * rhs);
String operator+ (const String& rhs);
//String & operator+= (const char ch);
String & operator+= (const String& rhs);
friend bool operator== (const String& lhs, const String& rhs);
friend bool operator< (const String& lhs, const String& rhs) {
return strcmp(lhs.vStr, rhs.vStr);
}
friend ostream& operator<< (ostream& ostr, String& rhs);
char & operator[] (int pIndex);
char operator[] (int pIndex) const;
const char * String::Buffer () const;
wchar_t * GetTChar();
int String::GetLength () const;
~String ();
答案 0 :(得分:0)
“没有找到哪个操作符,其中左 - 操作数类型为' const 字符串'”
它似乎有一个像
这样的表达式a=b;
a
和b
都是const String
。
你不能分配给const(虽然编译器看起来拼命寻求这种赋值的实现)
答案 1 :(得分:0)
好的,我只能用您提供的信息回答您提出的问题,答案是this works for me。