簡體   English   中英

保存模板類的類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM