如何创建异构的对象集合?
我想在一个中使用特征对象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
。
千巷猫影