Могу ли я перегрузить существующую функцию/оператор в существующем классе?
Я пытался сделать:
#include <iostream>
#include <string>
using namespace std;
string& string::operator<<(const string& str) {
this->append(str);
}
Но это дает мне ошибку:
test.cpp:5: error: too few template-parameter-lists
Как я могу это сделать? Или я не могу?
string&(в отличие от чего-то вродеostream&)? Вместо того, чтобы вводить синтаксис, я думаю, вам лучше просто делать то, что вы хотите, т.е. если у вас естьstd::stringс именемxи вы хотите добавитьy, используйте для этого существующие механизмы вstd::string(например,x += y) без добавления<<перегрузка. Если, с другой стороны, это опечатка, и вы действительно хотите печатать в поток, обновите свой вопрос. - person Kevin Grant   schedule 17.07.2012ostream#<<— это еще одна функция, отличная отstring#<<, верно? И ‹‹ имеет ассоциативность слева направо, поэтому это не повлияет на cout. - person texasbruce   schedule 17.07.2012operator<<наostream&предназначено для изменения потока, а не строки; это отличается от того, что вы написали, но я подумал, может быть, вы действительно хотели это сделать. (Гораздо более типично перегружать<<для работы с потоком.) - person Kevin Grant   schedule 17.07.2012