Где определить функцию шаблона члена класса C ++ и функторы, которые ее создают?

У меня есть класс Foo, который используется в небольшом автономном проекте. У него есть определение класса в Foo.h с реализацией функций-членов класса в файле реализации Foo.cpp.

Первый вопрос - одна из функций-членов класса Foo - это шаблонный метод Foo :: doSomething () , правильно ли, что реализация этого метода должна появляться с объявлением функции в Foo. h?

Параметр шаблона, с которым будет создан экземпляр Foo :: doSomething (), является одним из двух типов Functor - классом CalcA и CalcB.

Должен ли я:

  • (A) указать определение и реализацию два класса Functor вместе в Foo.cpp (где они фактически используются реализацией других функций-членов Foo для вызова Foo :: doSomething).
  • (B) помещает определение и реализацию двух классов Functor в Foo. h.
  • (C) следует ли разделить определение и реализацию двух функторов в Foo.h и Foo.cpp, как это было бы с обычным классом?
7
задан Macke 30 November 2010 в 16:30
поделиться