Мне нужно перегрузить оператор вставки для просмотра объектов класса в формате матрицы. Я написал код, но что-то не так. Когда я включаю это в свой код и пытаюсь построить, компилятор дает мне массу ошибок; когда я прокомментировал эту часть, ошибки исчезли, и программа работает правильно. Вот код:Что случилось с перегрузкой оператора вставки? (<< operator)
template <class itemType>
ostream & operator<< (ostream & os, const Storage2D<itemType> & rhs)
{
node<itemType>* ptrRow = rhs.head;
node<itemType>* ptrColumn = rhs.head;
for(; ptrColumn->down != NULL; ptrColumn = ptrColumn->down)
{
ptrRow = ptrColumn;
for(; ptrRow->right != NULL; ptrRow = ptrRow->right)
{
os << ptrRow->info << setw(10);
}
os << ptrRow->info << setw(10) << endl;
}
return os;
}
Вот как я пытался использовать перегрузки от основной функции:
Storage2D<double> m(row, column);
cout << m;
Это не является функцией-членом класса Storage2D написано, выходит за рамки класса Storage2D в файле реализации.
Было бы здорово, если вы поможете мне, спасибо заранее.
EDIT: Вот остальная часть моего кода. Файл Storage2D.h:
template <class itemType>
struct node
{
itemType info;
node* right;
node* down;
node()
{}
node(itemType data, node* r = NULL, node* d = NULL)
{
info = data;
right = r;
down = d;
}
};
template <class itemType>
class Storage2D
{
public:
Storage2D(const int & , const int &); //constructor
//~Storage2D(); //destructor
//Storage2D(const Storage2D &); //deep copy constructor
private:
node<itemType>* head;
};
ostream& operator<< (ostream & os, const Storage2D & rhs);
#include "Storage2D.cpp"
Нам нужно увидеть сообщения об ошибках. В идеале вы также покажете нам небольшой (<100 строк) автономный тестовый пример, который демонстрирует проблему; кода, который вы показали, недостаточно, чтобы знать, что не так. – zwol
Как правило, когда вы спрашиваете, как исправить проблему природы «если я делаю X, я получаю ошибки», вы должны включить в вопрос копию, по крайней мере, первой из этих ошибок. –
при угадывании вам нужно сделать оператора другом, но нам нужна ошибка, чтобы быть уверенным. – 111111