Я реализую статический полиморфизм:
template<typename T>
class Base {
public:
void method() {
// do something
impl();
// do something else
}
void impl() { // intended to be private
static_cast<T*>(this)->impl();
}
};
class Derived : public Base<Derived> {
public:
void impl() { // intended to be private
}
};
Этот код является статической реализацией динамических полиморфных классов, где void impl()
был чисто виртуальным.Таким образом, базовый класс был абстрактным.
Теперь эти классы реализуют статический полиморфизм и поэтому не имеют чисто виртуальных функций.
Можно ли сделать базовый класс абстрактным, чтобы объекты этого классане может быть создан?