实例化模板类时出现奇怪的错误消息

时间:2010-10-30 04:59:03

标签: c++ templates tree

我收到一个我不明白的错误。甚至在我发现的问题上也有类似的问题,但是我的代码中已经提供了修复。

我在这一行收到错误:

ForestNode<NODETYPE> foo = new ForestNode<NODETYPE> ForestNode(bar);

的内容如下:

\ project 4 \ forest.h | 85 | error:expected','或';'在'ForestNode'之前

我的类forestnode是这样定义的:

template<typename NODETYPE> class Forest;

template<typename NODETYPE> class ForestNode
{
    friend class Forest<NODETYPE>;

    public:
        ForestNode( const NODETYPE &);
        ~ForestNode();
        NODETYPE getTag() const;
    private:
        NODETYPE tag;
        ForestNode<NODETYPE> *leftChild;
        ForestNode<NODETYPE> *sibling;
};

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在构造函数调用中有两次类型名称,请尝试:

ForestNode<NODETYPE> foo = new ForestNode<NODETYPE>(bar);

答案 1 :(得分:1)

除了在一行上有2个构造函数之外,你不能将指针分配给变量。你要么必须这样做:

ForestNode * foo = new ForestNode;

或者这样做:

ForestNode<NODETYPE> foo;

或者这个:

ForestNode<NODETYPE> bar;
ForestNode<NODETYPE> foo( bar );