C++:模板<class>是什么意思?
C++: What does template<class> mean?
我正在努力理解一些c++代码。我是一个有经验的Java程序员,正在学习c++。我已经阅读了一些关于模板的详尽的文章,但是没有人回答我下面的模板规范是什么意思。
template<
template<template<class> class, class> class VisualOdometryTT,
template<class> class NodeBuilderTT,
class PoseGraphT>
class VORosInterface{ ... };
我不明白的部分是template<class>
,我认为缺少一些类型规范。但是代码编译没有问题。
以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在这里帮助澄清事实。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思