#c #templates
#c #шаблоны
Вопрос:
Допустим, у меня есть этот класс с именем Queue, который использует имя типа.
template <typename Type>
class Queue {
private:
int sz;
struct element {
Type val;
element *next;
element() {
val = 0;
next = nullptr;
}
};
element *first, *last;
}
Теперь, если я хочу создать очередь типа int, проблем нет. Однако, если я хочу создать другую очередь типа pair, строка val = 0;
выдает ошибку, поскольку 0
не имеет типа pair . Есть ли какой-либо способ избежать этого или обобщить его?
Комментарии:
1. Почему бы не использовать
Type
конструктор inelement
?2. Вы можете сделать
val = {};
?3. Спасибо за ваши ответы, оба работают, хотя я предпочитаю вариант @Den-Jason, поскольку мне не нужно каждый раз вводить аргументы.
4.
element
в любом случае, вероятно, конструктор по умолчанию не нужен. Может потребоваться параметризация, копирование, перемещение и присвоение, но не по умолчанию.5. Как вы думаете, почему
element()
необходимо делать что-то значимое? Допустим, вашType
почтовый адрес. Как вы создаете почтовый адрес из ниоткуда? В какой стране он находится? Если это запись person, может ли у вас быть nobody в вашей базе данных?