Чтобы определить функцию-член шаблона, вы должны объявить, что вы определяете функцию-член шаблона. Это объявление шаблона будет содержать имена аргументов шаблона, чтобы их можно было использовать в определении. Как это:
template <typename Object>
Вы уже успешно применили объявление шаблона в своем определении конструктора, но не смогли использовать объявление шаблона в определении других функций-членов.
Кроме того, в вашем определении getInfo
отсутствует тип возвращаемого значения. Кроме того, Event
не имеет члена с именем getInfo
(вы случайно добавили подчеркивание в объявлении).
Кроме того, вы понимаете, что шаблонные функции (и функции-члены шаблонных классов) должны быть определены в единицах перевода, в которых они создаются. Итак, если вы определяете функции-члены в Event.cpp
, то это единственная единица перевода, в которой вы можете создать экземпляр шаблона.
Это не очень хорошая вещь для повторного использования шаблона. Обычно лучше определить функции-члены в заголовочном файле.
Наконец, очень плохая идея иметь голые указатели на собственную память.
Если вы сделаете копию экземпляра Event
случайно или преднамеренно, ваш деструктор попытается дважды удалить память, что приведет к неопределенному поведению.
Для пользователя класса не очевидно, что аргумент будет удален. Очень легко случайно неправильно использовать ваш класс, создав его с указателем, который не должен быть удален.