У меня есть класс Point2DПерегрузка оператора вывода << работать со списком STL итераторов
Point2D
class Point2D
{
public:
int getX() const;
int getY() const;
void setX(int);
void setY(int);
protected:
int x;
int y;
};
Я пытаюсь перегружать выходной оператор < < работать с Point2D итератора p2d_list.begin(), но я не уверен, как это сделать, это моя попытка
ostream& operator<< (ostream& afile, Point2D* p2)
{
afile<<left
<<setw(1)
<<"["
<<left
<<setw(5)
<<p2->getX()
<<" ,"
<<left
<<setw(5)
<<p2->getY()
<<" ] "
<<left
<<setw(6)
<<p2->getScalarValue()
<<endl;
return afile;
}
В моей основной функции
int main()
{
list<Point2D> p2d_list;
list<Point2D>::iterator p2 = p2d_list.begin();
while (p2 != p2d_list.end())
{
cout<<p2; //error here
p2++;
}
}
Я получаю следующее сообщение об ошибке
ошибка C2679: бинарный «< <»: ни один оператор не найден, который принимает правый операнд типа «станд :: _ List_iterator < _Mylist>»(или нет приемлемой конверсии)
Как я перегрузить оператор вывода < < так, что он работает с Point2D итератора ** p2d_list.begin()
какие изменения я должен сделать для функции перегрузки? ? и как я должен cout ?? – Computernerd
@Computernerd использует '.' вместо' -> 'при обращении к полям объекта. Это все. – ForEveR
это не работает. Я получаю ту же ошибку: Ошибка C2679: двоичный '<<': оператор не найден, который принимает правый операнд типа «Point2D» (или нет приемлемого преобразования) – Computernerd