Question

J'ai une classe avec plusieurs fonctions membres de modèle que je voudrais répartir entre plusieurs fichiers source pour accélérer les temps de compilation. (Les modèles sont des détails de mise en œuvre et ne sont pas destinés à être utilisés en dehors de la classe, d'où leur définition dans les sources non-têtes).

Comment pourrais-je aller sur le fractionnement des modèles de telle sorte que je ne vais pas les erreurs de l'éditeur de liens? Si je fichier source A l'aide d'un modèle défini dans le fichier source de B, comment puis-je assurer que l'instance appropriée du modèle est construit par le compilateur?

Était-ce utile?

La solution

Je ne pouvais pas répondre à mieux que la FAQ C de:
https://isocpp.org/wiki/faq/templates#templates- defn-vs-décl

Autres conseils

Il suffit de ne pas déclarer ces éléments de modèle dans le cadre de la classe dans le fichier d'en-tête. Ensuite, définir uniquement vos modèles dans le fichier source. Par exemple:

MyClass.hpp

class MyClass
{
public:
    void SomePublicMethod() const;
};

MyClass.cpp

template<class T>
void SomethingWithT(T myVal)
{
    // ...
}

void MyClass::SomePublicMethod() const
{
    SomethingWithT(42);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top