簡體   English   中英

“請求非類型的成員”,作業聲明不正確?

[英]“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM