我知道必须先问过这个问题,但是语法是如此可怕,以至于我无法在任何地方找到我要面对的问题及其解决方案。
因此,以下是我的代码,并且出现以下错误。所有错误均来自for loop
函数中的findChild
。
need 'typename' before 'std::__cxx11::list<Node<ValueType>*>::iterator' because 'std::__cxx11::list<Node<ValueType>*>' is a dependent scope
expected ';' before 'it'
'it' was not declared in this scope
我的代码:
template <class ValueType>
struct Node
{
ValueType value;
Node* parent;
std::list<Node<ValueType>*> children;
Node(ValueType val)
{ this->valueType = value;
this->parent = nullptr;
}
Node<ValueType>* findChild(ValueType val)
{ for(std::list<Node<ValueType>*>::iterator it=children.begin(); it != children.end(); ++it)
{ if((*it)->value == val)
{ return *it;
}
}
return nullptr;
}
Node<ValueType>* addChild(ValueType val)
{ Node<ValueType>* n = new Node<ValueType>(val);
n->parent = this;
this->children.push_back(n);
return n;
}
};