【发布时间】:2011-09-19 08:46:35
【问题描述】:
我编写了一个自定义字符串类。 我想用它设置 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 ();
【问题讨论】:
-
请添加一些最小但完整的代码来演示问题。您遇到的实际问题可能与您认为的无关。
-
我的第一个猜测是您尝试创建
set<String const>而不是set<String>,但如果没有更多信息,很难判断。 -
不,我正在使用
set<String> var;,不,我不想打印字符串 -
这个错误可能是一个红鲱鱼。你能告诉我们你的
String类吗? (并解释你为什么不使用std::string) -
我们正在使用自定义 String 类,因为我们被告知要这样做
标签: c++ operator-overloading set