【问题标题】:Can a class inherit from another class template concretized by itself? [duplicate]一个类可以继承另一个自己具体化的类模板吗? [复制]
【发布时间】:2015-02-13 09:37:47
【问题描述】:

我正在浏览一些代码,我发现了这样的东西:

class GarbageCollectorProcess : public process::Process<GarbageCollectorProcess>

我想知道这样做是否有效。如果是,这难道不应该导致某种自定义循环,因为我们正在使用另一个依赖于 GarbageCollectorProcess 定义的类来定义 GarbageCollectorProcess?

【问题讨论】:

    标签: c++ inheritance c++11 template-classes


    【解决方案1】:

    “我想知道这是否可行。”

    是的,这是有效的,也是一种非常常见的模式,称为 Curiously Recurring Template Pattern,简称 CRTP

    例如用于实现静态多态。

    “如果是,这难道不应该导致某种自定义循环,因为我们正在使用另一个依赖于 GarbageCollectorProcess 定义的类来定义 GarbageCollectorProcess?”

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

    【讨论】:

      【解决方案2】:

      这是正确的做法。 这就是CRTP 的工作方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-25
        • 1970-01-01
        • 2011-03-17
        • 2014-03-25
        • 2011-01-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多