我在模块中有一段代码。
Controller是类的名称。 allocate_route是它的成员函数。
在定义成员函数时,它以
的形式给出template<UI num_ip>
void Controller<num_ip>::allocate_route()
{
}
UI是无符号整数。 num_ip
未在任何地方定义。他还没有在代码中的任何地方使用num_ip
。他通过这个声明告诉编译器什么。我在这里无法理解模板的使用。 Wat做这个代码吗?
答案 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()
{
}