我有一個對象,這個對象中的每個成員變量都有一個名稱,我可以通過調用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
也許你可以使用一些這個集合?也許矢量。例如:class object {/*....*/ vector> some_vars /*....*/} /*....*/ for(auto&it:o.some_vars {sign + = it。 get_name;})或者可能是字典/地圖 –
它不是一個函數和更多*反射*。有一些方法可以在C++中提供某種程度的反思,但如果沒有它,那麼最好。 –