Странное сообщение об ошибке при создании экземпляра класса шаблона - PullRequest
1 голос
/ 30 октября 2010

Я получаю ошибку, которую не понимаю. Был даже похожий вопрос, заданный для SO, который я нашел, но данное исправление уже есть в моем коде.

Я получаю сообщение об ошибке в этой строке:

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

что гласит:

\ project 4 \ forest.h | 85 | ошибка: ожидается ',' или ';' до '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 ]

1 голос
/ 30 октября 2010

Помимо наличия двух конструкторов в одной строке, вы не можете выделить указатель на переменную.Вы должны сделать это:

ForestNode * foo = new ForestNode;

или сделать это:

ForestNode<NODETYPE> foo;

или это:

ForestNode<NODETYPE> bar;
ForestNode<NODETYPE> foo( bar );
1 голос
/ 30 октября 2010

У вас есть имя типа дважды в вызове конструктора, попробуйте:

ForestNode<NODETYPE> foo = new ForestNode<NODETYPE>(bar);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...