2011-03-07 12 views
0

私はこのクラスを書いています。私のコンパイラは"137 getValue' has not been declared "getValueのエラー

template < typename T> 
void RB< T>::levelOrder(Child *root) 
{ 
    std::vector< RB< int>::Child* > vec1 , vec2; 
    vec1.push_back(root); 
     vector< RB< int>::Child* >::iterator vec1start ,vec1end , vec2start, vec2end; 
    while(vec1.size() != 0 && vec2.size() != 0) 
    { 
     vec1start = vec1.begin(); 
     vec1end = vec1.end(); 
     for(; vec1start != vec1end ; ++vec1start) 
     { 
      std::cout<<"\n node value = "<< vec1start->getValue(); 

を言っている理由は、私が

template < class T> 
class RB 
{ 
class Child 
{ 
members are Child are 
    T getValue() const , Child* getRightChild() const , Child* getLeftChild() const , void setLeftChild(Child *i_leftChild) , void setRightChild(Child *i_rightChild) 
} 
//Problematic function 
void levelOrder(Child *root); 
}; 

必要とされるものを与えている私の問題文は簡潔にするために、元のクラスの完全な説明ではありませんあなたが指摘することができます私は私が定義されていないと思いますベクトルも正しく、私のベクトルは、内部クラスの要素を保持する必要があります、それと助けもあります。

+0

コードの書式(selectとctrlk + k)を確認すると、コードが読みやすくなります。 – Gareve

答えて

1

1つの問題は、vec1startを初期化していないということです。また、テンプレート引数を使用せずにRB<int>しか使用しないと、RBがテンプレートになるのはなぜですか?あなたが得るエラーは、vec1startが逆参照でポインタを返すイテレータであるためです。したがって、あなたはあなたが望むことを行うには(*vec1start)->getValue()をする必要があります。

+0

vec1startはvec1.begin()に初期化されています。私のコンパイルエラーを解決したので、助けてくれてありがとう。 – user258367