如何创建多态数组然后将值转换为具体类型?

时间:2017-12-18 17:43:27

标签: rust polymorphism

我正在重写Rust中的C ++应用程序,我需要实现一个指向基类的指针数组,并用派生类填充数组。

C ++:

BaseClass base[2] = new BaseClass[2];

base[0] = FirstDerivedClass ();
base[1] = SecondDerivedClass ();

FirstDerivedClass *fderived = dynamic_cast<FirstDerivedClass> (base[0]);

if (fderived != nullptr) {
   fderived.exclusive_method ();
}

我尝试使用Vec<Box<BaseTrait>>创建类似的东西,但无法将其强制转换为适当的派生类。

使用枚举的解决方案并不合适,因为变体之间的大小存在很大差异,我需要分配数千个元素。这导致我在enum中组合了一个结构框,但我不知道如何实现它。

0 个答案:

没有答案