Ben cRTP kullanarak derleme zamanı polimorfizm uygulamaya çalışırken ve işlevi uygulamak için türetilmiş bir sınıf zorlamak istiyorum ediyorum.CRTP kullanarak statik polimorfizmde saf sanal işlevi taklit mümkün mü?
şu anki uygulama böyledir. fonksiyon sonsuz bir döngü içine düşüyor türetilmiş sınıf f()
uygulamak olmasaydı
template <class Derived>
struct base {
void f() {
static_cast<Derived*>(this)->f();
}
};
struct derived : base<derived>
{
void f() {
...
}
};
Bu uygulamada, diyoruz.
nasıl saf sanal işlev gibi işlevi uygulamak için türetilmiş bir sınıf zorlarım? Ben static_assert(&base::f != &Derived::f, "...")
gibi 'static_assert' kullanmaya çalıştı ama farklı sınıfların üye işlevlerine işaret eden iki üye işlev işaretçileri karşılaştırılabilir olmadığını belirten bir hata mesajı oluşturur.
'ctype :: scan_is' ve' ctype :: do_scan_is' bir göz atın. – Mehrdad