我想知道如何編寫C++函數來打印泛型結構的屬性。例如,C++函數輸出泛型結構
struct a {
std::string field_1;
std::string field_2;
std::string field_3;
};
struct b {
int a;
int b;
int c;
};
該函數將形式爲'a'或'b'的結構作爲輸入並生成輸出。也許可以使用一個模板 - 如果可以的話,如何構建它?
我想知道如何編寫C++函數來打印泛型結構的屬性。例如,C++函數輸出泛型結構
struct a {
std::string field_1;
std::string field_2;
std::string field_3;
};
struct b {
int a;
int b;
int c;
};
該函數將形式爲'a'或'b'的結構作爲輸入並生成輸出。也許可以使用一個模板 - 如果可以的話,如何構建它?
這在標準C++中是不可能的,它不會以這種方式工作。 C++ does not have reflection。
這是目前不可能的,但可能在靜態反射的C++ 17中可用。
有兩種可能的解決了反射在C失蹤++的支持。
第一個是使用std :: tuple來代替它並遍歷它。這可以通過反射顯式完成,或者很好地包裝在boost :: fusion中。
用C++ 14的第二個可能性是boost :: hana。在boost :: hana中有結構體,可以迭代。這是在預處理器宏的幫助下完成的。
如果你還有興趣,我可以在這裏發表一個簡單的例子。
這在Java中不會太難。驚訝這是不可能的C++ –
@KAlistair事實上,但Java和C++實際上是非常不同的 – vu1p3n0x
Java是一種託管語言。 C++不是。託管語言與本機編譯語言(如C++)有本質的區別。 –