static_cast.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpTsCr 401 of 696 menu
◀ ▶

Шаблон рекурсивного наследника в C++

Шаблон рекурсивного наследника передает в базовый шаблон производный класс как аргумент, чтобы общий код вызывал методы наследника через static_cast.

База хранит только логику, а конкретное поведение остается в классе-потомке. Запишем Base<D> с методом run и Child : Base<Child>, затем выведем метку из потомка:

#include <iostream> template<typename D> struct Base { void run() { static_cast<D*>(this)->step(); } }; struct Child : Base<Child> { void step() { std::cout << 1 << "\n"; } }; int main() { Child item; item.run(); return 0; }

Добавьте struct Leaf : Base<Leaf> с step, печатающим 2. Вызовите run у Leaf.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить