我正在尝试理解一些C++代码。我是一名经验丰富的Java程序员,正在努力学习C++。我已经阅读了一些关于模板的详尽文章,但没有一篇文章回答我下面的模板规范是什么意思。
template<
template<template<class> class, class> class VisualOdometryTT,
template<class> class NodeBuilderTT,
class PoseGraphT>
class VORosInterface{ ... };我不理解的部分是template<class>,我认为其中缺少一些类型规范。但是代码编译起来没有问题。
发布于 2013-06-12 03:46:16
使用NodeBuilderTT作为示例,因为它更简单:
NodeBuilderTT是一个模板参数,它本身就是一个具有一个参数的模板--让我们称之为Z。
您可以选择正式命名Z,代码将以相同的方式进行编译:
template<class Z> class NodeBuilderTT到目前为止,这与声明函数参数非常相似:
void foo(int x) {} // works
void foo(int) {} // also works但是,对于函数,您通常会在函数体中使用名称x。对于模板,您不能在VORosInterface的定义中使用Z,因此命名它是绝对没有意义的,并且编写它是惯用的
template<class> class NodeBuilderTT我要感谢K-ballo在这里帮我解决了这个问题。
https://stackoverflow.com/questions/17052376
复制相似问题