継承階層があり、この階層の各クラスに、そのクラスに固有で、プログラムの実行中に変更されない一連の属性を持たせたいと考えています。例えば:
class Base
{
public:
const std::string getName() const;
bool getAttribute1() const;
int getAttribute2() const;
};
今、これらの関数が常に同じ結果を返すようにしたいと考えています。さらに、別のクラスが継承する場合、Base
このクラスは独自の属性セットを持つ必要があり、この派生クラスのインスタンスは同じ属性を持つ必要があります。また、名前はクラスごとに一意にする必要があります。
これをできるだけ透明でエレガントにする方法を知りたいです。私が使用できる2つのアイデアを検討しました:
- いくつかのロック システムを作成します。
つまり、これらの属性のセッターを提供しますが、それらが複数回呼び出されたときに実行時例外をスローするようにします。
- ゲッターを純粋仮想にします。
この場合、関数の結果はオブジェクト自体の内部には格納されません。これにより、結果が動的タイプに依存することが漠然と明確になります。
どちらのアイデアも信じられないほどお粗末に聞こえるので、あなたの助けが必要です.
私は C++ は初めてですが、このような一般的な問題を解決するためのイディオムやパターンがたくさんあることは知っています。何でも知ってますか?