Я пытаюсь перегрузить оператор '=' и оператор '< <' тем же способом.Зачем использовать функцию друга
class Vect{
public:
//..
Vect& operator=(const Vect& a);
ostream& operator<<(ostream& out, const Vect& vect);
//..
private:
int *data;
int size;
};
эта работа
Vect& Vect:: operator=(const Vect& a){
//..
//copy data operator
for(int i = 0; i< size; i++){
data[i] = a.data[i];
}
return *this;
}
однако: этот код причины ошибки
[Error] станд :: ostream & Vect :: Оператор < < (станд :: ostream &, Const Vect &) 'должен принимать ровно один аргумент
ostream& Vect::operator<<(ostream& out, const Vect& vect){
//.. print vect
}
Я чтение «Структура структуры данных и алгоритмы в C++» (1.5.4). Они сказали, что я должен использовать друзей класса для перегрузки '< <', потому что это доступ к частным данным членов. Я не понимаю, почему. Перегружая оператор «=», я также получаю доступ к данным частного члена без использования «друга».
Вам не интересна ошибка? Потому что он ничего не говорит о доступе к частным данным. (хотя это, вероятно, также будет проблемой, как только вы устраните проблему, вызывающую текущую ошибку). –