私はオブジェクトを持っています。このオブジェクトの各メンバ変数は、get_name()を呼び出して取得できる名前を持っています。メンバー変数をアルファベット順に並べ、次に何かをします。例えば:コピー&ペーストプログラミングの代わりに関数
class CXMLWrapper<class T>
{
public:
CXMLWrapper(const char* p_name) : m_local_name(p_name)
{
}
//skip the get_name(), set_name() and others
private:
string m_local_name;
T m_type_var;
}
class object
{
public:
object() : m_team("team"), m_base("base")
{
}
public:
CXMLWrapper<string> m_team;
CXMLWrapper<string> m_base;
...
}
私はこのようなハードコードする必要があります。
object o;
string sign = o.m_base.get_name();
sign += o.m_team.get_name();
私は、オブジェクトが変化した場合に代わりにコピー&ペーストでこれを行うための機能を必要としています。誰でもアイデアがありますか?
さまざまなメンバー変数を持つさまざまなオブジェクトがありますか? – doctorlove
多分あなたはこれのためにいくつかのコレクションを使用することができますか?多分ベクトル。例:クラスオブジェクト{/*....*/ vector> some_vars /*....*/} /*....*/ for(auto&it:o.some_vars {sign + = it。 get_name;})または多分辞書/マップ –
それは関数とより多くの*反射*です。 C++である程度のリフレクションを提供する方法はありますが、もしそれがなければ最善の方法です。 –