要求派生类提供成员函数模板
Require derived class to provide member function template
我有一个基类和一堆派生类。我想指定派生类需要提供一个特定的成员函数模板。对于常规函数,我会指定一个纯虚拟函数
class A
{
virtual void f() = 0;
}
然后我会在派生类中覆盖它。然而,由于模板不能是虚拟的,我不知道在这种情况下我该怎么做。
class A
{
template <class T>
virtual void f() = 0; // this is not allowed
}
是否有其他方法要求子类指定成员函数模板?
您可以简单地记录派生类必须具有该模板。该要求将被强制执行,因为如果函数丢失,尝试调用该函数的代码将无法编译。
通过删除基类中的函数,您可以使代码更加自我文档化,并可能获得更好的诊断
// Derived classes must provide this template
template <class T> void f() = delete;
总有一天,概念可能会提供一种更好的方式来指定非虚拟接口;但我们还没有。
相关文章:
- 是否可以获取成员函数模板参数的拥有对象?
- 实例化多种类型的成员函数模板
- C++:递归成员函数模板
- C++成员函数模板将成员函数指针作为模板参数
- 类和成员函数模板专用化出错
- 调用类模板的成员函数模板
- 课堂中成员函数模板的明确实例
- 专用和/或重载具有可变参数的成员函数模板
- 具有可变参数的类成员函数模板部分专用化
- 将 PIMPL 习惯用法与成员函数模板一起使用(无需预先了解所有可能的数据类型)
- 澄清了使用 enable_if 的成员函数模板专用化
- 是否可以从指向成员函数模板参数的指针推断类类型
- 成员函数模板推演指南或其他方法让编译器知道如何调用函数
- 成员函数模板不会在 clang 上编译,但在 GCC 上编译
- 类模板的成员函数模板找不到定义,尽管存在显式实例化。不链接
- 成员函数模板参数的部分专业化
- 在C++中创建成员函数模板专用化
- 要求派生类提供成员函数模板
- 实例化错误后成员函数模板的专业化,以及成员函数的顺序
- 使用提升::函数的成员函数模板