Задайте с помощью пользовательской задачи класса String - PullRequest
0 голосов
/ 19 сентября 2011

Я написал собственный класс строки. Я хочу использовать 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)'

Полагаю, запрашивается перегруженный оператор = (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 ();

Ответы [ 2 ]

0 голосов
/ 19 сентября 2011

Хорошо, я могу ответить только на вопрос, который вы задали, с информацией, которую вы дали, и ответ таков: это работает для меня .

0 голосов
/ 19 сентября 2011

"не найдено ни одного оператора, который принимает левый ручной операнд типа ' const String'"

кажется, что у вас есть выражение типа

a=b;

, где a и b равны const String.

Вы не можете назначить const (хотя компилятор выглядит отчаянно ищущим реализацию такого назначения)

...