Où définir membre de classe C++ fonction de modèle et de foncteurs que l'instancier?

J'ai une classe Foo qui est utilisée dans un petit projet indépendant. Il a une définition de la classe Foo.h la mise en œuvre de la classe de fonctions de membre dans un fichier d'implémentation Foo.cpp.

Première question - l'une des fonctions membres de la classe Foo est un modèle de la méthode Foo::doSomething(), est-il exact que la mise en œuvre de cette méthode doit figurer dans la déclaration de la fonction Foo.h ?

Le paramètre de modèle qui Foo::doSomething() sera instancié à l'un des deux types Functor - classe CalcA et CalcB.

Devrais-Je:

  • (A) la définition et la mise en œuvre des deux Foncteur classes tous ensemble dans Foo.cpp (où elles sont effectivement utilisées par la mise en œuvre d'autres Foo fonctions de membre d'appeler Foo::doSomething).
  • B) de mettre à la définition et à la mise en œuvre des deux Foncteur classes dans Foo.h.
  • (C) dois-je mettre de diviser la définition et la mise en œuvre des deux Foncteurs travers Foo.h et Foo.cpp comme le ferait avec une classe ordinaire?

OriginalL'auteur Paul Caheny | 2010-11-30