C ++:模板<class>是什么意思?</class>

时间:2013-06-11 19:41:27

标签: c++ templates

我正在尝试理解一些C ++代码。我是一名经验丰富的Java程序员,正在努力学习C ++。我已经阅读了一些关于模板的详尽文章,但没有人回答我以下模板规范的含义。

template<
    template<template<class> class, class> class VisualOdometryTT, 
    template<class> class NodeBuilderTT,
    class PoseGraphT> 
class VORosInterface{ ... };

我不理解的部分是template<class>,我认为缺少某种类型规范。但代码编译没有问题。

1 个答案:

答案 0 :(得分:6)

NodeBuilderTT为例,因为它更容易:

NodeBuilderTT是一个模板参数,它本身就是一个带有一个参数的模板 - 让我们调用Z

您可以选择正式命名Z,代码编译方式相同:

template<class Z> class NodeBuilderTT

到目前为止,这与声明函数参数非常相似:

void foo(int x) {}   // works
void foo(int)   {}   // also works

但是,通过这些函数,您通常会在函数体内使用名称x。使用模板,您无法在Z的定义中使用VORosInterface,因此在命名时绝对没有意义,而且编写

是惯用的
template<class> class NodeBuilderTT

感谢K-ballo在这里帮助创造了记录。