我有这张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; '?)
我无法修复此错误 任何帮助都将非常感谢^^
答案 0 :(得分:2)
cout << "Point1 :(" << (*it)->p1->x << endl;
你需要澄清你想要的 - &gt;运算符* it,而不是*(it-&gt; ...)。