【发布时间】:2018-10-10 01:10:21
【问题描述】:
所以我正在尝试制作一个包含我的组件的 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();
};
所以我尝试过使用模板,但失败了错误:使用变量模板需要模板参数列表
我需要使用模板吗?如果是的话怎么办?感谢您的帮助!
编辑:我的组件是从 Component 类派生的
【问题讨论】:
-
不,您不需要使用模板。但是,您的
vector是存储Component类本身的实例,还是从Component派生的类的实例?它有很大的不同。在前一种情况下,你可以使用vector<Component>,在后一种情况下你必须使用vector<Component*>来避免slicing the objects -
我将编辑我的帖子的派生类
-
我试过 vector
但是当创建一个 Component2:Component 类时,它给了我这个错误:不允许转换为无法访问的基类“Component” -
请改用
class Component2 : public Component。class Component : Component使用 private 继承,但您需要 public 继承。此外,如果您打算通过基址Component*指针delete派生对象,则需要将~Component()声明为virtual。