Ошибка C2512 (Object: нет подходящего конструктора по умолчанию)

Написал два шаблонных класса, один-список, другой-его элементы:

#include <iostream>
using namespace std;
template <typename T>
class Object{
    T thing;
    Object* next;
    Object* prev;
    template <class T>
    friend class Queue;
public:
    Object() : next(nullptr), prev(nullptr) {}
    ~Object() {}
};
template <typename T>
class Queue {
    Object<T>* begin;
    Object<T>* end;
public:
    Queue() : begin(nullptr), end(nullptr) {}
    ~Queue() {
        while (begin) {
            Pick();
        }
    }
    void Pushback() {
        Object<T>* a = new Object;
        if (begin == nullptr) {
            begin = a;
            end = a;
        }
        else {
            end->next = a;
            a->prev = end;
            end = a;
        }
    }
    void Pick(int c = 1) {
        for (int i = 0; i < c; i++) {
            if (begin == nullptr)
                break;
            Object<T>* a = begin;
            begin = begin->next;
            delete a;
        }
    }
};

Отказывается работать, ссылаясь на отсутствие конструктора по умолчанию у класса Object, указывая на 26 строку.

void Pushback() {
    Object<T>* a = new Object;

Не могу понять в чём дело. Что здесь не так?


Ответы (1 шт):

Автор решения: Harry

Компилятор не может сообразить, а какой объект вы имеете в виду? Он же шаблонный...

Достаточно добавить три символа: <T>

Object<T>* a = new Object<T>;
→ Ссылка