【发布时间】:2013-08-03 15:05:15
【问题描述】:
在我的 C++ 项目中,我有一个 Engine 类和一个 Object 类。
我的问题在于我的 Object 实例是如何创建的。目前这是通过在Engine 类中使用CreateObject(parameters) 函数来完成的。这会将 Object 的新实例添加到 std::vector 的 Object 实例中。
我想在我的Engine 类中维护Object 的实例列表,但不需要CreateObject(parameters) 函数。我这样做的原因是我可以创建可以从Object 继承但仍被添加到此列表中的新类。此列表的原因是(在 Engine 中)我可以遍历每个已创建的 Object 实例。
这最终意味着我使用Object newObject = Object(parameters); 之类的东西创建我的Object 实例,但仍然让Engine 类维护所有Object 实例的列表,而无需Object 引用Engine 的实例或将自身添加到此列表的列表(如 Object 的实例不应该知道它所在的列表)。 可以这样做吗?
【问题讨论】:
-
如果不创建
Enginestatic的实例或单例(无论如何这是一种“静态”的美化方式)或让对象本身维护自己的静态列表,就无法做到这一点实例,并授予Engine对该列表的访问权限。 -
如何将Object的实例保存在Engine类的静态向量中,并使用静态公共函数推送Object实例?您可以在 Object 类的构造函数中调用它。
-
对于仅存储对象实例的问题,也许可以看看我对问题c++ storing an object into an array of objects within the constructor of that object 的回答,这是尝试使用更现代的指针。
标签: c++ list class instance stdvector