これは良いパターンですか?
BaseClass {
protected:
Data m_data;
public:
Interesting public_method() {
//returns something interesting about m_data
//what exactly depends on what the subclass put into m_data
}
}
DerivedClass {
public:
DerivedClass() { //properly populate m_data }
}
これの欠点は、サブクラスのプログラマーが何かをするように言われるだけで、実際にそれをするように強制されるわけではないため、物事が「緩い」ことであり、コンパイル時に強制されないことです。
良い方法またはより良い方法はありますか?
サブクラスのコンストラクターがその作業を行った後に、スーパークラスのコンストラクターのみを強制的に呼び出すことができれば。次に、スーパークラスのコンストラクターに必要なパラメーターを含めることができます
c++ はこれを許可しません:(