すべての派生クラスに対して特定の操作を強制する抽象基本クラスがあります。これに加えて、派生クラスで宣言されたサブクラスに固有の特定の操作を強制したいと考えています。
以下は最小限の例です。
class Base {
public:
virtual void init() = 0;
virtual void reset() = 0;
};
class Derived1 : public Base {
class Data {
int *x1;
public:
Data() {
x1 = NULL;
}
void alloc(int num) {
x1 = new int[num];
}
~Data() {
delete[] x1;
x1 = NULL;
}
} data;
public:
void init() { ... }
void reset() { ... }
void resetData() {
data.~Data();
}
};
class Derived2 : public Base {
class Data {
float *x2;
public:
Data() {
x2 = NULL;
}
void alloc(int num) {
x2 = new float[num];
}
~Data() {
delete[] x2;
x2 = NULL;
}
} data;
public:
void init() { ... }
void reset() { ... }
void resetData() {
data.~Data();
}
};
上記の例では、Base はすべての派生クラスで init() および reset() メソッドを強制します。
これに加えて、すべての派生クラスが持つことを強制したいと思います
- 名前付きデータのメンバー変数と
resetData()
この変数のデストラクタを呼び出すメソッドData &getData()
変数への参照を取得するために呼び出されるメソッド
これを達成するための最良の方法は何ですか?