我正在尝试理解一些C++代码.我是一名经验丰富的Java程序员,正在努力学习C++.我已经阅读了一些关于模板的详尽文章,但没有人回答我以下模板规范的含义.
template<
template<template<class> class, class> class VisualOdometryTT,
template<class> class NodeBuilderTT,
class PoseGraphT>
class VORosInterface{ ... };
Run Code Online (Sandbox Code Playgroud)
我不明白的部分是template<class>我认为某些类型规范缺失的地方.但代码编译没有问题.
使用它NodeBuilderTT作为一个例子,因为它更容易:
NodeBuilderTT是一个模板参数,它本身就是一个有一个参数的模板 - 让我们调用它Z.
您可以选择正式命名Z,代码将编译相同:
template<class Z> class NodeBuilderTT
Run Code Online (Sandbox Code Playgroud)
到目前为止,这与声明函数参数非常相似:
void foo(int x) {} // works
void foo(int) {} // also works
Run Code Online (Sandbox Code Playgroud)
但是,通过这些函数,您通常会x在函数体内使用该名称.有了模板,你不能使用Z的定义VORosInterface,所以绝对不会有一点命名它,它是地道写
template<class> class NodeBuilderTT
Run Code Online (Sandbox Code Playgroud)
我要感谢K-ballo在这里帮助创造了记录.