如何创建异构的对象集合?
我想在一个中使用特征对象Vec。在C ++中我可以使一个基类Thing从中导出Monster1和Monster2。然后我可以创建一个std::vector<Thing*>。Thing对象必须存储一些数据,例如x : int, y : int,派生类需要添加更多数据。
目前我有类似的东西
struct Level {
// some stuff here
pub things: Vec<Box<ThingTrait + 'static>>,}struct ThingRecord {
x: i32,
y: i32,}struct Monster1 {
thing_record: ThingRecord,
num_arrows: i32,}struct Monster2 {
thing_record: ThingRecord,
num_fireballs: i32,}我定义了一个ThingTrait与方法get_thing_record(),attack(),make_noise()等,并实现它们的Monster1和Monster2。
千巷猫影
相关分类