在cpp的模板

时间:2011-02-09 14:10:15

标签: c++ templates

我在模块中有一段代码。

Controller是类的名称。 allocate_route是它的成员函数。

在定义成员函数时,它以

的形式给出
template<UI num_ip>
void Controller<num_ip>::allocate_route()
{
}

UI是无符号整数。 num_ip未在任何地方定义。他还没有在代码中的任何地方使用num_ip。他通过这个声明告诉编译器什么。我在这里无法理解模板的使用。 Wat做这个代码吗?

2 个答案:

答案 0 :(得分:3)

该代码实现了模板类allocate_route中定义的函数Controller

创建模板类时,您有两种方法来实现函数:

template <int a>
class A
{
   void x() { ... }
};

template <int a>
class A
{
   void x();
};

template <int a>
void A<a>::x()
{
}

答案 1 :(得分:1)

也许他在这个方法之外的某个地方使用num_ip,但仍在Controller类内(可能是另一种方法)。

如果在模板中定义方法,则必须添加template<...>,即使方法不使用模板参数。这就是为什么在这种情况下做这样的事情会更好:

class Controller_base
{
  void allocate_route(){
  }
};

template<UI num_ip>
class Controller: public Controller_base
{
}

void Controller_base::allocate_route()
{
}
相关问题