變量名有什麼辦法,用C++ 11,得到一個變量,它是一個(可能是靜態)constexpr的名稱。C++ 11打印運行時間等於一些constexpr變量
例如:
struct Foo{
int x, y, z;
};
constexpr Foo PrintMe = { 1, 2, 3};
我想獲得一個字符串 「PrintMe」 不知何故。
我知道,我可以用這樣的宏:
#define NAME_OF(v) #v
,並呼籲
std::cout << NAME_OF(PrintMe) << std::endl;
,它將打印
PrintMe
是否有辦法到g et以下打印相同?
Foo a = PrintMe;
std::cout << Magic(a) << std::endl;
編輯: 我不是在尋找一些神奇的解決方案,這將使呼叫Magic(a)
工作。我明白,做一些事情來適應我想要的需要定義一些宏或模板。 像枚舉可以以某種方式進行打印(How to convert an enum type variable to a string?
你在找什麼叫反射,它不是C++的一部分。 – NathanOliver
編號順便說一句,它與'constexpr'有什麼關係。這在C++中是不可能的,無論它是否是「constexpr」。 – Nawaz
此外,您的標題是誤導。你有辦法打印編譯時間變量,你正在尋找打印運行時變量。 – NathanOliver