代码之家  ›  专栏  ›  技术社区  ›  Thomson

派生类用作模板参数的用途是什么?

  •  6
  • Thomson  · 技术社区  · 14 年前

    这种模式的目的是什么?它叫什么?当我第一次看到它的时候,它看起来很奇怪,尽管我现在已经看过很多次了。

    template<typename Derived>
    struct Base {
      //...
    };
    
    struct Example : Base<Example> {
      //...
    };
    
    3 回复  |  直到 14 年前
        1
  •  5
  •   Chubsdad    14 年前

    我想你正在考虑 CRTP here

        2
  •  8
  •   GManNickG    14 年前

    它被称为 Curiously Recurring Template 模式,并允许静态多态性。

    当您希望向特定类添加功能,但希望该实用程序在一般情况下可用时,它很有用。通过使实用程序依赖并使用模板参数,可以同时实现这两个目的。

        3
  •  5
  •   Roger Pate Roger Pate    14 年前