Итак, у меня есть вектор с «Компонентами». Я могу легко получить доступ к переменным компонента из вектора, но когда я добавляю подкласс к вектору, я не могу получить доступ к этим переменным.
Может быть, это действительно смелый вопрос, и решение, вероятно, действительно сложное, но я не знаю, с чего начать и что попробовать, поэтому любая помощь приветствуется.
struct Component {};
std::vector<Component> components;
struct Transform : Component
{
int x, y;
};
void Start()
{
components.push_back(Transform());
//can't acces x below
std::cout << components[0].x;
}
РЕШЕНИЕ
сделайте вектор только для уникальных указателей:
std::vector<std::unique_ptr<Component>> components;
шаг 2:
void Start()
{
//add component (pointer to vector)
components.push_back(std::make_unique<Transform>());
//cast to Transform
Transform const* transform = static_cast<Transform*>(components[0].get());
std::cout << transform->x;
}