C++从"NameBase"类到模板"Name"类的相互关系的成语(或模式)

C++ idiom (or pattern) with interheritance from `NameBase` class to template `Name` class

本文关键字:quot 成语 关系 模式 NameBase Name C++      更新时间:2023-10-16

我不时在不同的C++项目中遇到以下(或类似的东西(类层次结构:

class DummyBase
{
public:
virtual ~DummyBase() {}
virtual void doSomething() = 0;
};
template<typename T>
class Dummy : public DummyBase
{
public:
void doSomething() override
{
...
}
private:
T field;
};

看起来像C++成语,模式或技巧。你能告诉我这个构造的目的以及使用它可以解决的问题吗?我很乐意阅读好文章或描述它的书籍。

这是基于多态的类型擦除,它通常用于处理诸如std::functionstd::any之类的东西,它们可以以完全相同的方式存储不相关类型的数据(例如,用于std::function的函数指针和成员函数指针(。