Мне нужно изменить первую строку на: 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() {
}
но я не уверен во всей внутренней работе, которую мне нужно изменить. Нужно ли мне просто менять частный элемент данных и функцию общего узла?
Я думаю, что то, что вы ищете, - это нечто вроде следующего:
template<typename T>
class Node
{
private:
T data;
Node* next;
public:
Node(const T& d);
virtual ~Node();
// ... etc
};
Обратите внимание, что вам нужно будет либо внедрить класс шаблона inline, в том же файле, либо включить реализацию в нижней части файла заголовка.
Дело в том, что вы меняете свой класс, чтобы он мог использоваться для других типов, кроме double
, например int
, float
т.д. Таким же образом. Если мы рассмотрим это более абстрактно, вам нужно использовать класс для объектов типа T
, где T
может быть любым из упомянутых выше типов (или даже больше). Итак, в общем, вам нужно поставить template <class T>
(Установка его как класс шаблона) перед вашим классом и заменить double
типом T
для объявления класса:
template<typename T>
class Node
для реализации функций класса:
template<typename T>
Node<T>::Node()