我有一個專案,我需要能夠將給定型別轉換為 ID。
此代碼無法編譯,但我希望它顯示我正在嘗試實作的功能。
class TypeIDManager {
public:
template <typename Type>
void setTypeID(std::size_t ID) {
m_data.insert({ typeid(Type), ID });
}
template <typename Type>
std::size_t getTypeID() {
return m_data[typeid(Type)];
}
private:
std::unordered_map<std::type_info, std::size_t> m_data;
};
uj5u.com熱心網友回復:
這就是std::type_index:
std::unordered_map<std::type_index, std::size_t> m_data;
std::type_info可通過其轉換建構式隱式轉換為std::type_index,因此您無需更改插入地圖的方式。
但是std::type_index沒有std::unordered_map's所需的默認建構式operator[]。
因此,您將需要使用find/at方法來檢索值,例如
return m_data.at(typeid(Type));
如果找不到密鑰,這將引發例外。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/451615.html
標籤:C
上一篇:向量的快速排序<字串>
