[英]How would I store multiple classes within a variable, maybe a list? or vector? Polymorphism
我对 C++ 还是有点陌生,我不确定是否在列表中创建不同的实例。 在我的程序中,我有多个从基类继承的类:
class Foo{
}
class Bar : public Foo {
}
class Fin : public Foo {
}
我面临的问题是我需要用另一个替换一个以防万一。 例如:
for (int i = 0; i < list/vector/? ; i++){
if (bar_i[i].destroyed()){
Fin fin_i = new Fin(); // in place of Bar
}
}
然后将占据 Bar(s) 位置。 我可以用什么来创建列表、向量或其他任何东西来创建多个类的实例?
您不能在标准容器中存储不同类型(标准容器要求所有元素都属于同一类型)。
但是,您可以使用多态并存储指向父(公共)类型的指针。
您可能需要重新考虑您的设计并将常用方法和成员移至父类型。
编辑 1:示例实现
std::vector<Foo *> container;
for (unsigned int i = 0; i < 6; ++i)
{
if (i & 1)
{
container.push_back(new Bar);
}
else
{
container.push_back(new Fin);
}
}
for (unsigned int i = 0; i < 6; ++i)
{
container[i]->Common_Operation();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.