[英]“Request for member which is of non-class type”, assignment statement incorrect?
我正在嘗試循環遍歷名為_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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.