开发者

Error on getValue

开发者 https://www.devze.com 2023-02-15 08:58 出处:网络
I have written this class. This is not complete description of original class to make my problem statement concise i am giving what is required

I have written this class. This is not complete description of original class to make my problem statement concise i am giving what is required

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

Can you point out why my compiler is saying "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();   

I think i have not defined vector also correctly, my vector needs to hold inner class element, any help with that is also appreciated


One issue is that you are not initializing vec1start. Also, why is RB a template if you never use the template argument and only ever use RB<int>? The error you get is because vec1start is an iterator which when dereferenced returns a pointer; thus, you need to do (*vec1start)->getValue() to do what you want.

0

精彩评论

暂无评论...
验证码 换一张
取 消