关于c ++:一个类可以继承自己的另一个类模板吗?

Can a class inherit from another class template concretized by itself?

本问题已经有最佳答案,请猛点这里访问。

我检查了一些代码,发现了如下情况:

1
class GarbageCollectorProcess : public process::Process<GarbageCollectorProcess>

我想知道这是否是一件有效的事情。如果是,这是否会导致某种自定义循环,因为我们正在使用另一个依赖于GarbageCollector进程定义的类来定义GarbageCollector进程?


"I was wondering if this was a valid thing to do."

是的,这是有效的,也是一种非常常见的模式,称为奇怪的循环模板模式,简称CRTP。

例如,它用于实现静态多态性。

"If yes, shouldn't this lead to some kind of a self definition loop because we are defining a GarbageCollectorProcess using another class that depends on the definition of GarbageCollectorProcess?"

不,没有自我定义循环。模板类只实例化一次。


这是正确的做法。这就是CRTP的工作原理。