【问题标题】:C++ - terminology of an idiomC++ - 成语的术语
【发布时间】: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"});

【问题讨论】:

标签: c++ terminology idioms


【解决方案1】:

GManNickG 在 cmets 中回答 OP,成语称为 Type erasure。谢谢!

【讨论】:

    猜你喜欢
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 2019-04-01
    相关资源
    最近更新 更多