により、クラスのメンバを呼ぶ++。しかし、このメンバを自動的にマップに追加して、文字列で簡単にアクセスできます。cが、私はいくつかのメンバーを持つべきであるクラスCを持っている文字列
だから、アイデアは...パラメータとマップまたは何か他のものにそれ保存構造体と呼ばれる構造体を持つことである
しかし、私はマップを使用する必要がありますどのようにSHUREありませんよ。私の考えは、メンバ値へのポインタを持つマップを作成することでした。しかし、どのようにstructコンストラクタでこのメンバを初期化するのですか?
template <typename C>
struct parameter {
typedef int (parameter::*mfp)(int);
static std::map<std::string, mfp> registered_parameter;
parameter(std::string name) {
// todo...
}
// parameter overloading code and something other here ...
};
テンプレートには、各クラスの静的マップがあります。 C1とC2クラスは異なるマップを持つ必要があります。
C1 could be look:
class C1: public C {
parameter<C1> x("x");
parameter<C1> y("y");
}
など、私が何かをやっている場合:
C1 c1_1;
C1 c1_2;
// should be different x
c1_1.x = 2
c1_2.x = 3
C++は、このように動作しません。 –
'mfp'はメンバ関数へのポインタであり、メンバ値へのポインタではありません。 'parameter'は' mfp'が指し示すことができるメンバを持っていません。 'c1_1.x'は' parameter'ですが、 'c1_1.x = 2;'をコンパイルする 'operator =(int)'はありません。質問を完成させ、 'parameter'があなたが望むことを仮定して書くコードの例を示してください。現在あなたの例は何もしていません。 – nwp
クラスCはパラメータstruct inを持っていますが、オーバーロードのように書く必要はありませんが、明らかに演算子のオーバーロードが必要であるためです。で、私は「この」マップに私は簡単 'this'あなたが参照している文字列 – R3Tech