Я изучаю cpp и в моем последнем задании я переписываю класс std :: string. так вот набросок моего кода: строка класс:C++: ошибка: недопустимые операнды типов 'String *' и 'const char [7]' to binary 'operator +'
class String {
public:
String(const char* sInput) {
string = const_cast<char*> (sInput);
}
const String operator+(const char* str) {
//snip
print();
}
void print() {
cout<<string;
}
int search(char* str) {
}
private:
char* string;
int len;
};
О, и я должен сказать, что я пытался объявить метод как String, оператор * + (Const символ * НТР) и константным Строка & оператора + (const char * str) без изменений. А вот как я запускаю его:
int main(int argc, char* argv[]) {
String* testing = new String("Hello, "); //works
testing->print();//works
/*String* a = */testing+"World!";//Error here.
return 0;
}
Полная ошибка выглядит такой:
foobar.cc:13: error: invalid operands of types ‘String*’ and ‘const char [7]’ to binary ‘operator+’
Я посмотрел на Google и в книге я учусь из без успеха. любой с предложениями? (Я уверен, что я делаю что-то глупое, вам придется простить меня, я изначально программист на PHP). Может ли кто-нибудь указать мне на то, что мне не хватает?
Хорошая идея, но теперь, когда я это делаю: String testing = new String («Hello»); Я получаю следующую (такую же) ошибку: foobar.cc:11: ошибка: преобразование из 'String *' в нескалярный тип 'String' запрошен –
Уведомление Я удалил в моем примере ключевое слово "new" из этой строки. Использование «new» выделяет что-то в куче и возвращает указатель на него; без «нового» это вызов конструктора для объекта в стеке. –
О, хорошо, спасибо! –