次のような一連のクラスを書き留めたいと思います。
- あらゆる種類のオブジェクトとそのリレート ゲッターをラップする純粋な仮想クラス。
- 必要なオブジェクトの種類ごとに 1 つまたは複数のクラスを作成し、仮想オブジェクトを拡張して getter をオーバーライドして特殊化します。
ラッパーのテンプレート クラス ソリューションはこのケースに適しているようですが、次の 2 つの異なるコンテキストで使用する必要があります。
- 最初のものはラッパーの実装を認識していません。この場合、 ( Javaのように) 任意のクラス名を表す
Wrapper<AnyObj> var;
withを宣言する必要があります。私の知る限り、これは C++ では実行できません。AnyObj
?
- 2 つ目は、特定のラッパー実装に制限されています。この場合、(ダウンキャストするのではなく) ラップされたオブジェクトを正確な型で返すゲッターが必要です。
私が正しければ、テンプレート クラスを使用できません。さらに、ラッパーにはprotected: T* wrappedObject
メンバーがありません。
Java のアプローチにとらわれているのか、最初から間違った考えを持っているのか、それとも何かが欠けているのかはわかりません。
どんな提案でも大歓迎です。