Super basic объявляет новый шаблонный вопрос объектов класса - PullRequest
0 голосов
/ 28 ноября 2009

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

TreeNode <T>newLeft = new TreeNode(root->data[0]);

Что относится к конструктору, который выглядит следующим образом:

template <class T>
//paramerter receving constructor
TreeNode<T>::TreeNode(T item){
  data[0] = item;
  nodeType = 2;
}//end 

И я получаю следующие ошибки:
ошибка: ожидаемый спецификатор типа перед «TreeNode»
ошибка: ожидается `; ' до "TreeNode"

Что такое спецификатор типа? Я могу предоставить больше кода, если это необходимо, и я знаю, что задал вопрос об этом коде ранее, и я уверен, что я буду за это заслужен; но у меня все еще есть вопросы ...

редактирование: Вот функция, в которой он используется:

template <class T>
void TwoThreeFourTree<T>::splitRoot(){
  TreeNode <T> newRoot;
  newRoot = new TreeNode(root->data[1]);

  TreeNode <T>newLeft = new TreeNode(root->data[0]);

  TreeNode <T>newRight = new TreeNode(root->data[2]);

  newRoot.child[0] = newLeft;
  newRoot.child[1] = newRight;

  newLeft.child[0] = root.child[0];
  newLeft.child[1] = root.child[1];

  newRight.child[0] = root.child[2];
  newRight.child[1] = root.child[3];

  root = newRoot;

}

И я получаю одни и те же две ошибки каждый раз, когда пытаюсь создать новый объект в функции

1 Ответ

4 голосов
/ 28 ноября 2009

Вы забыли T в new и указатели:

TreeNode<T>* newRoot;
newRoot = new TreeNode<T>(root->data[1]);

Обратите внимание, вам нужно будет фиксировать использование указателей повсюду, а не только здесь. Помните, что это не Java или C #, а переменная типа TreeNode<T> не является ссылкой на T - это является T. вам нужны ссылки - то есть указатели. Хотя вы также можете рассмотреть возможность использования std::auto_ptr здесь для гарантии очистки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...