它是否类似于C++中的<?>泛型?



例如我有模板化结构

template <class T>
struct Event {
T args;
int32_t coordinate;
};

例如,我想存储 在一个向量中Event<int32_t>Event<std::vector<int32_t>>。是否有其他语言的泛型的类似物,例如:std::vector<Event<?>>

UPD适合所有需要了解我需要做什么的人:我有很多事件,它们有不同类型的论点。例如,有些事件可能int32_targ,有些std::vector<int32_t>,有些Event<int32_t>,等等......

@HolyBlackCat的评论

对此的经典方法是从单个非模板基类继承所有Event<T>,然后将unique_ptr存储到vector中的该基

这就是你会怎么做的。

#include <vector>
#include <cstdint>
#include <memory>
struct EventBase
{
virtual ~EventBase() = default;
};
template <class T>
struct Event : public EventBase {
T args;
std::int32_t coordinate;
};
int main()
{
std::vector<std::unique_ptr<EventBase>> v;
v.emplace_back(new Event<int>());
v.emplace_back(new Event<double>());
}

最新更新