У меня есть эти 3 класса.Наследование с использованием CRTP
class A
{
public:
virtual void Func() = 0;
};
template<class T>
class B : public A
{
public:
void Func()
{
cout << "In B" << endl;
static_cast<T*>(this)->Func();
}
};
class C : public B<C>
{
public:
void Func()
{
cout << "In C" << endl;
}
};
И, я делаю это:
int main(int argc, char **argv)
{
A *a = new C;
a->Func();
return 0;
}
И печатает: "В C".
Если я сделаю это,
int main(int argc, char **argv)
{
B<C> *a = new C;
a->Func();
return 0;
}
Это снова печатает "В С"
Что происходит?
нечитаемый код. – Drakosha
Что бы вы ожидали от печати? – sth
Во втором случае «В B», затем «В C»? – nakiya