2012-04-01 29 views
2

我试图循环遍历每个节点中包含的名为_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

对不起,我是个傻瓜!只是不要直视欢呼声 – Holly 2012-04-01 17:09:04

回答

4

currentNode是一个指针,这意味着你需要通过访问其属性` - >,就像你做了上面的一行:

currentNode->GetPrev() 

你真的应该努力学习指针和实例之间进行区分。指针属性总是通过->来引用。

4

如果currentNode是一个指针,那么您可以像访问成员变量一样使用->而不是.访问成员函数。

2

CurrentNode是一个指针,尝试用->

currentNode = currentNode->GetPrev();