getValue出错

时间:2011-03-07 03:11:29

标签: c++ templates vector

我写过这堂课。这不是对原始类的完整描述,以使我的问题陈述简洁,我正在给出所需要的

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

你能指出我的编译器为什么说"137 getValue' has not been declared "

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();   

我认为我还没有正确定义向量,我的向量需要保存内部类元素,对此的任何帮助也表示赞赏

1 个答案:

答案 0 :(得分:1)

一个问题是您没有初始化vec1start。另外,如果您从不使用模板参数并且只使用RB,为什么RB<int>是模板?你得到的错误是因为vec1start是一个迭代器,当解引用时返回一个指针;因此,你需要(*vec1start)->getValue()做你想做的事。