error C2839: invalID return type 'Machinestate **' for overloaded 'operator ->
我正在使用Microsoft Visual Studio 10.我Googled的错误,我可以找到的是“ – >运算符必须返回一个类,结构或联合,或一个引用.
Struct Machinestate{ template <typename MachineTraits> frIEnd class Machine; enum Facing { UP,RIGHT,DOWN,left}; Machinestate() : m_ProgramCounter(1),m_ActionsTaken(0),m_Facing(UP),m_Test(false),m_Memory(nullptr),x(0),y(0),point1(25,10),point2(10,40),point3(40,40) { } int m_ProgramCounter; int m_ActionsTaken; Facing m_Facing; bool m_Test; int x; int y; Point point1; Point point2; Point point3;};
我声明列表为
std::List<Machinestate*> zombs;
这里是我尝试遍历我的列表,我继续收到错误,在“it-> point1”表示该表达式必须有一个指向类类型的指针.
for(std::List<Machinestate*>::iterator it = zombs.begin(); it != zombs.end(); it++) { Point points[3] = {it->point1,it->point2,it->point3}; Point* pPoints = points; SolIDBrush brush(color(255,255,0)); m_GraphicsImage.Fillpolygon(&brush,pPoints,3); }
如果有人可以解释我是什么
解决方法 它是指向Machinestate的指针的迭代器.您需要取消引用迭代器和指针.
Point points[3] = {(*it)->point1,(*it)->point2,(*it)->point3};
编辑:
取消引用意味着得到它所指的东西.
使用*或 – > *** 作符.
如果是Machinestate,可以使用它.point1
如果它是一个指向Machinestate的指针,可以使用它 – > point1或(* it).point1
如果它是Machinestate的迭代器,您还可以使用它 – > point1或(* it).point1
由于它是指向Machinestate的指针的迭代器,因此您必须使用(* it) – > point1或(** it).point1
总结以上是内存溢出为你收集整理的c – 表达式必须具有指向类的类型全部内容,希望文章能够帮你解决c – 表达式必须具有指向类的类型所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)