【发布时间】:2017-08-08 06:39:57
【问题描述】:
这个成语帮助我解决了几个问题,但我不知道这怎么称呼,谷歌搜索没有帮助。其目的是将不同的模板类存储在异构集合中,一个著名的示例用法是std::any。
class TemplateBase
{
public:
virtual void f() = 0;
virtual ~TemplateBase() {}
};
template<typename T>
class TemplateImplementation : public TemplateBase
{
T data;
public:
virtual void f() override
{
// some T-specific implementation
std::cout << data << std::endl;
}
};
std::vector<std::unique_ptr<TemplateBase>> collection;
collection.emplace_back(new TemplateImplementation<int>{1});
collection.emplace_back(new TemplateImplementation<std::string>{"hello"});
【问题讨论】:
-
“类型擦除”是您要查找的术语。
-
确实错过了继承。修复了 OP,抱歉。
-
为什么有“buzzword-compliance”标签,却没有“buzzword-bingo”标签?
标签: c++ terminology idioms