// Library code
struct Entity;
struct Attachment {
Entity& entity;
Attachment(Entity& mEntity) : entity(mEntity) { }
};
// ---
// User code
struct MyAttachment1 : Attachment {
// This is annoying to write for every attachment type
// Especially when there are other constructor arguments
// And if there are a lot of attachment types
MyAttachment1(Entity& mEntity) : Attachment{mEntity} { }
};
struct MyAttachment2 : Attachment {
MyAttachment2(Entity& mEntity) : Attachment{mEntity} { }
};
// ...
从代码示例中可以看出,派生自的每个类型都Attachment
需要定义一个重复的构造函数,其中将 anEntity&
传递给基类构造函数。
这不是问题,但在我的项目中,我处理了 40-50 多个附件,并且它们在构造函数中也有自己的参数。
似乎没有必要明确地Entity&
作为第一个参数传递。
我发现的一种解决方法是使用用户覆盖的方法,并且在添加an 之后virtual void Attachment::init()
调用该方法。但是,这使用了不必要的调用,并且仍然需要用户处理样板代码。Entity
Attachment
virtual
有没有更优雅的方法来处理这个问题?