我正在重写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中组合了一个结构框,但我不知道如何实现它。