不同类别的C ++向量

时间:2018-10-10 01:10:21

标签: c++ templates vector

所以我试图制作一个std :: vector <>来包含我的组件:

class Component
{
private:


public:
    Component();

    void update();

    ~Component();
};

向量在我的Object类中:

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

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

    ~Object();
};

所以我尝试使用模板,但是失败了:错误模板的使用需要模板参数列表

我需要使用模板吗?如果是,怎么办?谢谢您的帮助!

编辑:“我的组件”派生自Component类

1 个答案:

答案 0 :(得分:1)

由于您正在处理多态类,因此您需要在当前拥有Component*的地方使用?,因为多态只适用于指针/引用,并且还要避免#649任何对象您添加到vector中,例如:

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

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

    ~Object();
};