Перегрузка оператора вставки потока - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь перегрузить оператор вставки потока для назначения. В моем заголовочном файле у меня есть следующее:

friend ostream& operator<<(ostream, Vector);

В моем файле реализации у меня есть:

friend ostream& operator<<(ostream& outputStream, Vector& displayMe) {
    outputStream << "<" << displayMe.GetVX << "," << displayMe.GetVY << ">";
    return outputStream;
}

Я получаю сообщение об ошибке:

"неверный спецификатор вне объявления класса"

Ошибка указывает на строку, которая начинается с друга ostream & в моем файле реализации.

Я новичок в перегрузке операторов, очевидно. Я должен определить это за пределами класса? Я просто не понимаю, почему я получаю эту ошибку и как я go исправляю свой код. Любые предложения будут полезны.

1 Ответ

1 голос
/ 25 апреля 2020

Вам необходимо объявить оператор ostream<< в классе Vector:

class Vector
{
  // ...
  friend ostream& operator<<(ostream&, Vector&);
};

Обратите внимание, что вам также необходимо использовать ссылки в подписи.

Вы надеваете Не указывайте friend в реализации оператора.

Также рекомендуется взять Vector по константной ссылке здесь:

ostream& operator<<(ostream&, Vector const&);
...