adanve に関する注意: C++11 も受け入れられますが、C++99 が推奨されます。仮想関数については回答しないでください。テンプレートのみでお願いします!
私がモデル化したいのは、典型的な「A と B は C を意味する」状況です。私はいくつかの C++ クラスと、それらのプロパティを記述したいくつかのテンプレートを持っています。例:
template<typename S, typename T, typename U>
class Base
{
MaybeTruePropertyA<S,T> a;
MaybeTruePropertyB<S,T,U> b;
MaybeTruePropertyC<S,T,U> c;
};
私がこのように継承するとしましょう:
template<typename S, typename T, typename U>
class Inherited : public Base<S,T,U>
{
TruePropertyA<S,T> a;
TruePropertyB<S,T, U> b;
};
次に、魔法のようにinに設定PropertyC
したいと思います。さて、ここに私の問題があります:TrueProperty
Inherited
- これを魔法のように行う方法がわかりません。
MaybeTruePropertyA
また、 Inheritedに隠すのはメモリの無駄だと思います。
上記のようなプロパティを使用して「AとBがCを意味する」を行う方法を誰かが解決できますか? 一部を変更することはできますが、プロパティは引き続き のように表示する必要がありますTrueProperty<S,T> a
。
あまり抽象的ではない例がここにあります: http://pastebin.com/M209CJp4