我写过这堂课。这不是对原始类的完整描述,以使我的问题陈述简洁,我正在给出所需要的
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();
我认为我还没有正确定义向量,我的向量需要保存内部类元素,对此的任何帮助也表示赞赏
答案 0 :(得分:1)
一个问题是您没有初始化vec1start
。另外,如果您从不使用模板参数并且只使用RB
,为什么RB<int>
是模板?你得到的错误是因为vec1start
是一个迭代器,当解引用时返回一个指针;因此,你需要(*vec1start)->getValue()
做你想做的事。