在其内部使用模板类

时间:2019-05-09 19:02:08

标签: c++ class c++11 templates

我知道必须先问过这个问题,但是语法是如此可怕,以至于我无法在任何地方找到我要面对的问题及其解决方案。

因此,以下是我的代码,并且出现以下错误。所有错误均来自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;
    }
};

0 个答案:

没有答案