[英]Saving types of templated classes
考慮這些簡化的類(接口和模板派生類):
class Interface
{
virtual ~Interface() = default;
};
template<typename... T>
class Derived : public Interface
{
std::tuple<T...> member;
};
然后我將 Derived class 的任意模板類型推送到包含接口指針的數據向量中。
std::vector<Interface*> data;
push_back(new Derived<int, float>{});
push_back(new Derived<float, float>{});
push_back(new Derived<double, char>{});
我的問題是如何在不知道它是什么類型的情況下從Interface*
獲取模板類型(因為我不知道它是什么類型,所以我也無法將其轉換為正確的類型)。 最好我想將向量的每個索引與模板中使用的類型相關聯。
我嘗試為每個派生的 class 存儲 typedef/alias,但我找不到實現此目的的方法。 由於類/類型是編譯時概念,這甚至可能實現嗎?
模板類型僅在編譯時存在。 您無法從Ìnterface
模板類型。 但是您可以創建一個代表您的類型的運行時類型。 在 C++ RTTI/運行時類型信息支持非常有限。 但是看看type_index 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.