Ошибка C2440 в VisualStudio 2019
Типы kp::InputField/Button/Timer* не конвертируются в ReturnClass*. Что здесь не так? Непонятно.
template <class ReturnClass>
static ReturnClass* createObject(kp::ObjectType type)
{
switch (type)
{
case kp::ObjectType::InputField:
return createInputField();
case kp::ObjectType::Button:
return createButton();
case kp::ObjectType::Timer:
return createTimer();
default:
return nullptr;
}
}
Ответы (1 шт):
Автор решения: Никита Самоуков
→ Ссылка
Если тип неизвестен на этапе компиляции, то вернуть разные типы нельзя. Темплейты тут бессильны.
Можно так:
variant<TypeA*, TypeB*, void*> createObject(kp::ObjectType type)