шаблон в cpp - PullRequest
       19

шаблон в cpp

1 голос
/ 09 февраля 2011

У меня есть следующий фрагмент кода в модуле.

Контроллер - это имя класса.allocate_route является его функцией-членом.

При определении функции-члена она задается как

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

UI - Беззнаковое целое число.num_ip не определено где-либо.Он также не использовал num_ip нигде внутри кода.Что он говорит компилятору этим утверждением.Я не могу понять использование шаблонов здесь.Ват делает этот код?

Ответы [ 2 ]

3 голосов
/ 09 февраля 2011

Этот код реализует функцию 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 голос
/ 09 февраля 2011

Возможно, он использует num_ip где-то вне этого метода, но все еще внутри Controller класса (возможно, другого метода).

Если вы определяете метод внутри шаблона, вы должны добавить template<...>, даже если метод не использует параметры шаблона.Вот почему может быть лучше сделать что-то подобное в этом случае:

class Controller_base
{
  void allocate_route(){
  }
};

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

void Controller_base::allocate_route()
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...