我正在尝试循环访问名为 _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;
}
嗯,我有点困惑,希望得到任何帮助!请询问您是否需要更多信息/我不清楚,谢谢。
最佳答案
currentNode
是一个指针,这意味着您需要通过 `-> 访问它的属性,就像您在上面的行中所做的那样:
currentNode->GetPrev()
您真的应该尝试学习区分指针和实例。指针属性始终通过 ->
引用。
关于c++ - "Request for member which is of non-class type", 赋值语句不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9966295/