使用堆栈分配的对象将对象存储在异构向量中
你好,
假设我有一个抽象类 CA,派生到 CA1、CA2 和其他可能。
我想将这些派生类型的对象放入一个向量中,并将其嵌入到一个类 CB 中。为了获得正确的多态性,我需要存储一个指针向量:
class CB
{
std::vector <CA*> v;
};
现在,假设我有以下主要功能:
int main()
{
CB b;
CA1 a1;
CA2 a2;
b.Store( a1 );
b.Store( a2 );
}
如何void CB::Store(const CA&)
以简单的方式编写该方法,以便在原始对象被破坏时存储的对象仍然存在(在上面的简单示例中不会发生)。
我的问题是我需要先复制堆上的对象,然后再将它们的地址复制到向量中,但是如何创建派生类型的对象?当然,我可以使用 RTTI,搜索所有可能的类型,创建和分配指针,然后将对象复制(通过适当的转换)到分配的空间,然后再将其推入向量。但这似乎很复杂,不是吗?
有没有更简单的方法?
(并且主要不使用动态分配!)