#include <iostream>
template <typename Derived>
struct Base {
Derived&self()
{
return static_cast<Derived&>(*this);
}
const Derived&self() const
{
return static_cast<const Derived&>(*this);
}
public:
void start()
{
self().run();
}
};
class Derived : public Base<Derived> {
friend Base<Derived>;
void run()
{
std::cout << "Derived run()" << std::endl;
}
};
父类调用子类, 不过不同的 Base<Derived> 是不同的类, 好像没什么用处
CRTP 奇异递归模板模式
最新推荐文章于 2024-02-24 19:29:36 发布