2013-07-09 2 views
-2

Я должен сделать реализацию для оператора строки нижеЗастрял реализацию

String operator +=(const String &str); // this is my declaration which is in my header file 

Цель состоит в том, чтобы вернуть строку, сформированную путем добавления переданной строки со строкой метод называется на.

Это мой код/​​реализация до сих пор, но у него есть ошибки, и я застрял.

String::String::operator +=(const String &str) 
{ 
    strcat(contents, str.contents); 
    len += str.len; 
} 

Как это исправить? Две ошибки являются первой «Строка» и «оператор»

Это ошибка оператора: декларация несовместима с «String String :: оператор + = (сопзЬ Струнный & ул)»

и один для String; явный тип отсутствует («Int» вымышленный)

+3

Я хотел бы начать с понимания того, что [strcat] (http://en.cppreference.com/w/cpp/string/byte/strcat) делает –

+0

должно быть: 'String String :: operator + ='? – billz

+0

Ну, для реализации, он сказал, что ему нужен тип возврата – user2557401

ответ

1

Вы изменяете String, что оператор вызывается. Это соединение оператора (смесь из + и = операторов), так что вы должны вернуть ссылку на String, который был модифицирован:

String& operator +=(const String &str); 

String& String::operator +=(const String &str) 
{ 
    strcat(contents, str.contents); 
    len += str.len; 
    return *this; 
} 
3

Вот ваша проблема:

String::String::operator +=(const String &str) 
     ^^ 

два отмеченных символов должен быть заменен пробелами, так что у вас есть тип возвращаемого значения:

String String::operator +=(const String &str) 
{ 
    //... 
} 
+1

Я предполагаю, что синтаксическая ошибка при наличии 'strcat' без какой-либо проверки или выделения для полученной строки в случае, если она слишком короткая, может считаться незначительной :) – Jack

+1

You средняя * семантическая * ошибка. Не было очевидно, был ли 'strcat' членом класса, который обрабатывает перераспределение или нет, поэтому я не упоминал об этом. Этот вопрос был в основном связан с ошибками компилятора. – paddy

Смежные вопросы