Есть функция
drawObject
, она должна вернуть один из пяти типов - пример такого типа:
sf::RectangleShape
, или например
sf::CircleShape
, у всех этих типов есть общий наследуемый класс:
sf::Drawable
, я пытался сделать возвращаемый тип функции
sf::Drawable
, но тогда возникала ошибка что невозможно вернуть абстрактный класс из функции. Пытался написать свой общий класс, но ошибка та же, нельзя вернуть абстрактный класс. Также пытался использовать
std::variant
e.g:
std::variant<sf::RectangleShape, sf::CircleShape, other classes...>
Но такой код крашил программу, других вариантов как сделать я не знаю. Примерная работа функции:
// какой тип?
??? function(int x) {
if(x == 1) {
return 1.0f; // float
} else if(x == 2) {
return 1; // int
} else if(x == 3) {
return 'a'; // char
}
}
Что делать?