C ++ вектор другого класса - PullRequest
       4

C ++ вектор другого класса

0 голосов
/ 10 октября 2018

Поэтому я пытаюсь создать std :: vector <>, который будет содержать мои компоненты:

class Component
{
private:


public:
    Component();

    void update();

    ~Component();
};

вектор находится внутри моего класса объектов:

class Object
{
private:
    std::vector<?> m_Components;
public:
    Object();

    void addComponent(? component)
    {
        m_Components.push_back(component);
    }

    ~Object();
};

Так что япробовал использовать шаблоны, но ошибка не удалась: использование переменного шаблона требует списка аргументов шаблона

Нужно ли использовать шаблоны?если да как?спасибо за вашу помощь!

Редактировать: Мои Компоненты являются производными от класса Компонентов

1 Ответ

0 голосов
/ 10 октября 2018

Поскольку вы имеете дело с полиморфными классами, вам нужно использовать Component* там, где у вас в данный момент есть ?, потому что полиморфизм работает только с указателями / ссылками, а также во избежание нарезки любых объектов, которые вы добавляетедо vector, например:

class Object
{
private:
    std::vector<Component*> m_Components;
public:
    Object();

    void addComponent(Component *component)
    {
        m_Components.push_back(component);
    }

    ~Object();
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...