用自定义字符串类设置问题

问题描述:

我写了一个自定义字符串类。 我想用它设置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)' 

我想,这是要求重载运算符=(常量字符串,常量字符串)

但它不可能建立这样一个重载函数

我的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

请添加一些最小但完整的代码来演示问题。你遇到的实际问题可能与你的想法无关。 – Mankarse

+0

我的第一个猜测是你正在尝试创建一个'set '而不是'set ',但是如果没有更多的信息很难说清楚。 – Mankarse

+0

不,我正在使用'set var;',不,我不是要打印字符串 –

“没有操作员发现这需要一个左型 - 手操作 '常量字符串'”

它似乎你有一个像

a=b; 

表达其中两个abconst String

不能分配给一个const(尽管编译器会拼命地寻找这样的任务的实现)

+0

是这就是我无法理解的,它不可能创建opeartor =有两个常量参数 –

+0

@Sumit:你最有可能滥用'std :: set'某处导致编译器需要这样一个不可能的重载,例如试图分配给一组值。字符串类本身可能没问题。 – visitor

+0

@Sumit:是的,你不能创建该操作符,但编译器需要使用它。问题不是String,而是你用它做的事情。 –

OK,好,我只能回答你与你所提供的信息提出的问题,答案是this works for me