列出段的迭代器错误C ++

时间:2016-01-10 21:28:02

标签: c++ list pointers

我有这张C ++代码:

#include <list>
#include <iostream>
using namespace std;


struct point
{
int x;
int y;
} ;
typedef struct point point;


struct segment
{
point* p1;
point* p2;
} ;
typedef struct segment segment;

list<segment*> liste;


int main()

{
    point A,B,C,D;
    A.x=0;A.y=0;
    B.x=1;B.y=0;
    C.x=0;C.y=1;
    D.x=1;D.y=1;

    segment AB,BC,CD,DA;
    AB.p1=&A;AB.p2=&B;
    BC.p1=&B;BC.p2=&C;
    CD.p1=&C;CD.p2=&D;
    DA.p1=&D;DA.p2=&A;
    liste.push_back(&AB);
    liste.push_back(&BC);
    liste.push_back(&CD);
    liste.push_back(&DA);

     for(list<segment*>::iterator it = liste.begin(); it!=liste.end(); ++it)
    {cout <<"Point1 :(" << *it->p1->x <<endl;

    }
}

错误是:

  

在'* it.std :: _ List_iterator&lt; _Tp&gt; :: operator-&gt;()'中请求成员'p1',这是指针类型'segment *'(也许你打算使用' - &gt; '?)

我无法修复此错误 任何帮助都将非常感谢^^

1 个答案:

答案 0 :(得分:2)

    cout << "Point1 :(" << (*it)->p1->x << endl;

你需要澄清你想要的 - &gt;运算符* it,而不是*(it-&gt; ...)。