10
我有一个结构“MachineState”,我创建了一个“MachineState *”类型的列表。当我尝试通过列表迭代我不断收到“表达式必须具有指针类型
error C2839: invalid return type 'MachineState **' for overloaded 'operator ->
我使用微软的Visual Studio 10我一派错误和所有我能找到的是” - >运算符必须返回一个类,结构或联合,或一个参考。“
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“说t他表达式必须有一个指向类类型的指针。
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, 0));
m_GraphicsImage.FillPolygon(&brush, pPoints,3);
}
如果谁能给我解释一下什么是wron
这是正确的答案。对不起,我是C++的初学者。你能否通过解引用告诉我你的意思?非常感谢你的回答 – 2013-04-24 04:21:27
@JohnKemp看我的编辑。 – 2013-04-24 04:33:00
谢谢@DrewDormann。现在我明白了 – 2013-04-24 06:29:46