cpp中的模板

发布于 2024-10-16 18:25:11 字数 310 浏览 2 评论 0原文

我的模块中有以下一段代码。

控制器是类的名称。 allocate_route是它的成员函数。

在定义成员函数时,它被指定为

template<UI num_ip>
void Controller<num_ip>::allocate_route()
{
}

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

I hav a following piece of code in a module.

Controller is the name of the class.
allocate_route is the member function of it.

While defining the member function it is given as

template<UI num_ip>
void Controller<num_ip>::allocate_route()
{
}

UI is Unsigned Integer. num_ip is not defined any where. He also has not used num_ip anywhere inside the code. What does he tell to the compiler by this statement. Am not able to comprehend the use of templates here. Wat does this code do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如若梦似彩虹 2024-10-23 18:25:11

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

创建模板类时,有两种方法来实现功能:

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

或者

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

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

That code implements the function allocate_route defined in the template class Controller.

When creating template classes, you have two way to implement functions:

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

or

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

template <int a>
void A<a>::x()
{
}
私藏温柔 2024-10-23 18:25:11

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

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

class Controller_base
{
  void allocate_route(){
  }
};

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

void Controller_base::allocate_route()
{
}

Maybe he is using num_ip somewhere outside this method, but still inside Controller class (maybe another method).

If you define method inside a template you have to add template<...>, even if method doesn't use template parameters. That's why it could be better to do something like this in this case:

class Controller_base
{
  void allocate_route(){
  }
};

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

void Controller_base::allocate_route()
{
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文