Я ученик. Я работаю над перегрузкой оператора. Я пытаюсь написать код для перегрузки [] и распечатать элементы в массиве-члене. Но когда я перегружаю < <, чтобы напечатать массив элементов, я получаю ошибку, ostream & не имеет типа. Что я здесь делаю неправильно? Также, что я могу сделать, если у меня есть класс с двумя массивами-членами? Вот мой код ниже:ostream & не называет ошибку типа. Что я здесь делаю неправильно?
#include <iostream>
#include <cassert>
class Digit
{
private:
int digit1[3]{0};
public:
int& operator[](const int index);
ostream& operator<<(ostream& out);
};
int& Digit::operator[](const int index)
{
return digit1[index];
}
ostream& Digit::operator<<(ostream& out)
{
int loop;
out << "{";
for (loop = 0; loop < 10; loop++)
{
out << digit1[loop] << " ";
}
out << "}";
return o;
}
int main()
{
using namespace std;
Digit n;
n[0] = 4;
n[1] = 3;
n[2] = 4;
n << cout;
return 0;
}
Возможно, просто отсутствует пространство имен 'std :: ostream' –
Перегрузка должна быть свободной, поэтому вы можете следовать стандартным шаблонам' cout << n; '. – molbdnilo
'operator <<' не должен быть функцией-членом. Вы хотите написать 'stream << object', а не' object << stream' –