私はこのクラスを持っています:
class A : public B
保護されたフィールドを追加する必要があります:_field、Aにあり、Bにタッチ/変更できません。これで、BとAのすべての関数は、コンストラクターを除いて仮想になります。明らかに、_fieldはクラスBの一部ではありません。
_fieldを初期化する必要があります。コンストラクターがBだけの場合、どうすればよいですか?また、このようなもの:
unsigned long _field = 0;
コンパイルエラーが発生します。
私はこれを次のように解決します:
class A : public B
{
protected:
unsigned long _field;
public:
void fooFunction(){
....do other stuff....
static bool isInitField = false;
if (!isInitField){
_field = 0;
isInitField = true;
}
...rest of the function...
}
静的を使用せずにそれを行うためのより良い方法はありますか?
ありがとう、または