Как мне изменить класс на класс шаблона?

0

Мне нужно изменить первую строку на: template <class T> class Node{

class Node {
private:
  double data;
  Node* next;
public:
  Node(double);
  virtual ~Node(); //for later use of polymorphismi, review the topic again

  friend class Stack; // allows dStack for private member access
};

Node::Node(double data) {
  this->data = data;
  next = 0;
}

Node::~Node() {
}

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

Теги:

3 ответа

1

Я думаю, что то, что вы ищете, - это нечто вроде следующего:

template<typename T>
class Node
{
private:
    T data;
    Node* next;
public:
    Node(const T& d);
    virtual ~Node();
    // ... etc
};

Обратите внимание, что вам нужно будет либо внедрить класс шаблона inline, в том же файле, либо включить реализацию в нижней части файла заголовка.

1

Дело в том, что вы меняете свой класс, чтобы он мог использоваться для других типов, кроме double, например int, float т.д. Таким же образом. Если мы рассмотрим это более абстрактно, вам нужно использовать класс для объектов типа T, где T может быть любым из упомянутых выше типов (или даже больше). Итак, в общем, вам нужно поставить template <class T> (Установка его как класс шаблона) перед вашим классом и заменить double типом T

0

для объявления класса:

template<typename T>
class Node

для реализации функций класса:

 template<typename T>
 Node<T>::Node()
  • 0
    Вы не можете разделить классы шаблонов на 2 файла, если не включите файл реализации в конец файла заголовка.
  • 0
    Вы можете с явной реализацией .. я отредактирую ответ
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню