【发布时间】:2023-03-14 19:46:01
【问题描述】:
大家好,感谢阅读, 我是使用类的新手,在制作对象数组时遇到了问题, 我有一个基类和一个相同类型的数组,我想知道是否有可能 创建基类类型的子类并将它们放入一个数组并调用不是的方法 在基类中,如果这是一个不好的问题,我很抱歉,如果我的措辞不正确,我很抱歉,
#include <iostream>
int main()
{
BaseClass* ObjectList[10];
ObjectList[0] = new SubClass;
ObjectList[0]->Load(10);
ObjectList[0]->OtherFunction(); // How Can I Do This?
return 0;
}
class BaseClass
{
public:
virtual void Load(int Num) = 0;
};
class SubClass : public BaseClass
{
void Load(int Num) override
{
std::cout << Num << std::flush;
}
void OtherFunction()
{
// Do Something
}
};
谢谢
编辑 - 我的意图是有一个简单的基类,有几十个不同方法的子类,并有一个基类数组,
【问题讨论】:
-
1.) 您可以在
BaseClass接口中将OtherFunction设为虚函数。 2.) 如果这样做没有意义,您可以重新考虑将BaseClass和SubClass混合在同一个容器中,如果您实际上不能同等对待它们。 3.) 如果还有令人信服的理由,可以dynamic_cast基类指针。 -
事情是;我的意图是有几十个基类,我知道在这个例子中它非常简化,我会尝试看看我是否可以用 dyanamic_cast 做任何事情
-
你的意思是基类的几十个不同实例,这就是为什么你希望它们在一个数组中,或者是几十个具有不同接口的不同派生类,你希望它们的实例都在相同数组?如果是后者,我真的建议尝试找出真正属于一起的东西,也许不要把所有东西都放在一个“万物一体”的容器中。
-
我一直在做的是一个游戏引擎,我有一个基类“关卡”,然后是每个关卡的子类。关卡管理器需要有一个包含所有不同关卡子类的数组,并从每个子类调用所有不同的方法,总之,几十个派生的
-
这个问题的另一个例子是每个级别都有一个对象数组,每个对象类都派生自一个基对象类,每个对象都有通用和必要的方法,每个对象都有自己需要的方法被调用,
标签: c++ visual-studio class pointers abstract-class