使用<>?

时间:2017-11-20 21:36:15

标签: c++ arduino

我已经下载了Arduino的CmdParser库,我在示例代码中运行了以下几行:

CmdBuffer<32> myBuffer;

CmdCallback<5> myCallback; // Object for handling 5 function in SRAM

我对<>(尖括号)感到困惑。我已经看到<>用于处理器指令,例如#include <>,但我从未见过<>用于传递参数。任何人都可以简单解释这些代码行的实际作用,并指出我可以自己研究这个问题的地方吗?

1 个答案:

答案 0 :(得分:2)

在CmdBuffer&lt; 32&gt;的上下文中,尖括号接受对应的类模板的模板参数。模板是c ++的一个特性,可以部分定义类(或函数)。当给出适当的参数时,模板被认为被实例化为一个类,而该类又可以用于实例化一个对象。

与可在运行时动态提供的函数参数相比,必须在编译时知道模板参数。即,一旦程序执行完毕,就不能使用非const int变量将CmdBuffer实例化为各种大小。

类模板的参数可以是类型或值。例如,类模板向量可用于保存可变大小的值数组,但仅在提供数据类型之后。

vector<int> aVectorOfInts;

在您的示例中,类模板具有值参数,而不是类型参数。该值用于定义缓冲区的静态数组的大小。它必须在编译时知道。