Tôi có cấu trúc "MachineState" và tôi đã tạo danh sách loại "MachineState *". Khi tôi cố gắng lặp qua danh sách tôi tiếp tục nhận "Biểu thức phải có kiểu con trỏ đến lớp
error C2839: invalid return type 'MachineState **' for overloaded 'operator ->
Tôi đang sử dụng Microsoft Visual Studio 10. Tôi googled lỗi và tất cả tôi có thể tìm hiểu là" The -> điều hành phải trả lại một lớp, struct , hoặc công đoàn, hoặc một tham chiếu đến một. "
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;
};
tôi tuyên bố danh sách như
std::list<MachineState*> zombs;
đây là nơi tôi cố gắng lặp qua danh sách của tôi và tôi vẫn gặp lỗi, trên" it-> point1 "nói rằng t biểu thức của anh ta phải có một con trỏ tới kiểu lớp.
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);
}
Nếu bất cứ ai có thể giải thích cho tôi là những gì wron
Đó là câu trả lời đúng. Tôi xin lỗi, tôi là người mới bắt đầu trong C++. bạn sẽ cho tôi biết ý của bạn là gì bởi dereferencing? Cảm ơn bạn rất nhiều vì câu trả lời –
@JohnKemp Xem chỉnh sửa của tôi. –
Cảm ơn @DrewDormann. Bây giờ tôi hiểu rồi –