我正在尝试遍历名为_snakeSegments的列表中每个节点中包含的数据。 (注意:课程由我自己编写,不属于STL等)。每个数据元素都是一个Sprite,代表我的蛇的一个部分。
当我尝试编译时,我收到以下错误:request for member 'GetPrev' in 'currentNode', which is of non-class type 'Node<Sprite>*'
。已编译的标记了我尝试在下面的for循环中分配下一个currentNode的行:
void Snake::Draw(prg::Canvas& c)
{
Node<Sprite>* currentNode = _snakeSegments.GetHead();
for (int i=0; i < _snakeSegments.NumberOfNodes(); ++i){
currentNode->GetData().Draw(c);
currentNode = currentNode.GetPrev(); //compiler shows error here
}
}
继承了GetPrev的定义。当调用节点时,返回指向前一节点的节点指针..
template <typename NodeType>
Node<NodeType>* Node<NodeType>::GetPrev()
{
return _prev;
}
嗯,我有点困惑,不胜感激任何帮助!请询问您是否需要更多信息/我不清楚,谢谢。
答案 0 :(得分:4)
currentNode
是一个指针,这意味着您需要通过` - &gt;访问其属性,就像您在上面的行中所做的那样:
currentNode->GetPrev()
您应该尝试学习区分指针和实例。指针属性始终通过->
引用。
答案 1 :(得分:4)
如果currentNode
是指针,那么您使用->
而不是.
访问成员函数,就像对成员变量一样。
答案 2 :(得分:2)
CurrentNode是一个指针,尝试使用->
:
currentNode = currentNode->GetPrev();