Tôi có một đối tượng, mỗi biến thành viên trong đối tượng này có tên mà tôi có thể lấy nó bằng cách gọi hàm get_name(), những gì tôi muốn làm là nối tất cả các tên của biến thành viên theo thứ tự bảng chữ cái, sau đó làm điều gì đó. ví dụ:một hàm thay vì chương trình sao chép và dán
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;
...
}
tôi phải cứng mã như thế này:
object o;
string sign = o.m_base.get_name();
sign += o.m_team.get_name();
Tôi cần một chức năng để làm điều này thay vì sao chép và dán khi đối tượng khác nhau. Bất cứ ai có một ý tưởng?
Bạn có các đối tượng khác nhau với các biến thành viên khác nhau không? – doctorlove
Có lẽ bạn có thể sử dụng một số bộ sưu tập cho điều này? Có lẽ vector. Ví dụ: đối tượng lớp {/*....*/ vector> some_vars /*....*/} /*....*/ cho (auto & it: o.some_vars {sign + = it. get_name;}) Hoặc có thể từ điển/bản đồ –
Đó là một chức năng ít hơn và * phản ánh *. Có nhiều cách để cung cấp một mức độ phản ánh trong C++, nhưng nếu bạn có thể làm mà không có nó sẽ là tốt nhất. –