Нет, это невозможно.Что, если вы позвонили T operator()(U)
на Test*
, а он не реализовал это?В конечном итоге вам потребуется иметь класс, реализующий их все (или наследовать от одного или нескольких классов, реализующих каждый из них), чтобы создать его экземпляр.
Вы можете оставить любое количество виртуальных функций неопределенным, но если высделайте, ваш класс не будет инстанцируемым, потому что он все еще абстрактный.Вы должны будете иметь другой класс, наследующий от него, и определить эти неопределенные функции и создать его экземпляр.
tl; dr: Чтобы создать экземпляр класса, где-нибудь в его иерархии классов все виртуальные функции должны иметь определение.