C++ force derived 类实现静态函数
C++ force derived classes to implement static function
我正在尝试为某些 class A 的对象创建比较器 class。为此,我想创建基础 class BaseComparator
并派生 AComparator
和 BComparator
从它。有没有办法强制从 BaseComparator
派生的所有 classes 实现函数 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 {
}
会抛出编译时错误吗?
有一种方法可以通过抽象 class 实现这一点,但我并不满意,因为它需要一个 class 来拥有一个纯虚函数(而我的 classes没有状态,只有静态函数,我不需要它们的实例)。
您可以使用 CRTP,并检查传递的派生 class 即:
真是派生出来的class。您可以在 std::is_base_of
上 static_assert
它有这个成员函数作为静态函数。您可以尝试访问限定名称并将其 static_cast 为函数指针类型。
我正在尝试为某些 class A 的对象创建比较器 class。为此,我想创建基础 class BaseComparator
并派生 AComparator
和 BComparator
从它。有没有办法强制从 BaseComparator
派生的所有 classes 实现函数 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 {
}
会抛出编译时错误吗?
有一种方法可以通过抽象 class 实现这一点,但我并不满意,因为它需要一个 class 来拥有一个纯虚函数(而我的 classes没有状态,只有静态函数,我不需要它们的实例)。
您可以使用 CRTP,并检查传递的派生 class 即:
真是派生出来的class。您可以在
std::is_base_of
上 它有这个成员函数作为静态函数。您可以尝试访问限定名称并将其 static_cast 为函数指针类型。
static_assert