c++ - C++强制派生类实现静态函数
问题描述
我正在尝试为某个 A 类的对象创建 Comparator 类。为此,我想创建基类BaseComparator
并从中AComparator
派生BComparator
。有没有办法强制派生的所有类BaseComparator
都实现函数bool compare(const A &a, const A &b)
所以
class AComparator : public BaseComparator {
static bool compare(const A &a, const A &b) { return true; }
}
将编译并
class BComparator : public BaseComparator {
}
会抛出编译时错误吗?
有一种方法可以使用抽象类来实现这一点,但这并不能让我满意,因为它需要一个类具有纯虚函数(而我的类没有状态,只有静态函数,我不需要它们的实例) .
解决方案
您可以使用CRTP,并检查通过的派生类:
它确实是派生类。你可以
static_assert
上std::is_base_of
它有这个成员函数作为静态函数。您可以尝试访问限定名称并将其静态转换为函数指针类型。
推荐阅读
- jenkins - Jenkins管道按顺序构建多个项目?
- node.js - 带有 Node 和 SSL 的 Nginx proxy_pass
- java - 在邻接列表上节省内存的方法
- maven - Maven/Junit 并行执行 - Cucumber-JVM v4.0.0
- php - mashape unirest php测试
- java-8 - 如何在链式 CompletableFuture 内扇出?
- c++ - 我应该如何表示我拥有的连续元素序列?
- javascript - 如何在 Angular 2 的同一服务中将一些硬编码数据与 API 一起使用?
- javascript - ouath 3 使用 facebook 在登录期间截断问号
- javascript - 用承诺解决游标