“请求非类别成员”,赋值语句不正确?
问题描述:
我试图循环遍历每个节点中包含的名为_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()
你真的应该努力学习指针和实例之间进行区分。指针属性总是通过->
来引用。
答
如果currentNode
是一个指针,那么您可以像访问成员变量一样使用->
而不是.
访问成员函数。
答
CurrentNode是一个指针,尝试用->
:
currentNode = currentNode->GetPrev();
对不起,我是个傻瓜!只是不要直视欢呼声 – Holly 2012-04-01 17:09:04