2012-04-01 1 views
2

私は_snakeSegmentsというリストの各ノードに含まれているデータを調べようとしています。 (注:クラスは自分で書かれており、STLの一部ではありません)。各データ要素は、私のヘビの単一セグメントを表すスプライトです。"非クラス型メンバーの要求"、代入文が間違っていますか?

コンパイルしようとすると、次のエラーが表示されます。request for member 'GetPrev' in 'currentNode', which is of non-class type 'Node<Sprite>*' GetPrevの定義相続人

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 
    } 
} 

:コンパイルは、私は以下のforループ内の次のcurrentNodeのを割り当てようラインフラグを立てています。これは、ノード時に呼び出されたとき、私は少し混乱しているし、任意の助けをいただければ幸いです

template <typename NodeType> 
Node<NodeType>* Node<NodeType>::GetPrev() 
{ 
    return _prev; 
} 

もあの...前のノードにノードポインタを返します!あなたがより多くの情報を必要とするかどうか聞いてください/私は不明である、ありがとう。

currentNode->GetPrev() 

あなたが本当にポインタとインスタンスを区別することを学ぶようにしてください:あなたは上の行に行ったように、> -

+0

は申し訳ありませんが、私は馬鹿です!まっすぐ考えるだけで全部うれしい – Holly

答えて

4

currentNodeあなたは `経由でその属性にアクセスする必要があることを意味ポインタ、です。ポインタ属性は常に->で参照されます。

4

currentNodeがポインタの場合、メンバー変数の場合と同様に、.の代わりに->のメンバー関数にアクセスします。

2

currentNodeのはポインタで、->で試してみてください。

currentNode = currentNode->GetPrev(); 
関連する問題