Bien le bonjour !
Depuis que j'ai ajouté un paramètre template à l'une de mes classes - avec valeur par défaut - mon code ne link plus
Le problème étant assez complexe et impliquant pas mal de classes dans différents fichiers, je préfère ne pas mettre ici le code exact mais plutôt une version représentative. Après plusieures heures à chercher l'origine du problème, je m'en remet à vous en espérant que quelqu'un arrive déjà à comprendre les explications qui suivent, je me lance ;
Les différentes classes :
- Ici, le parametre policy est le nouveau paramètre cité plus haut :
- Ici, la classe de base contenant les méthodes citées dans les erreurs de link
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <template class T, class policy = DefaultPolicy<T> > class SharedPtr {<div style="margin-left:40px">// ... SharedPtr( const SharedPtr<T, policy>& other ) {<div style="margin-left:40px">// ...</div>} // ...</div>}
- pour finir, j'ai 2 classes qui dérivent de ce node, et lors de l'édition de liens de celles-ci, j'ai droit à des error LNK2001 décrivant les méthodes de la class Node ci-dessus (addnode et removenode). Je précise qu'il s'agit d'un héritage simple et public et que les méthodes sus-citées n'y sont pas surchargées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 // fichier .h typedef SharedPtr<Node> NodePtr; class Node { <div style="margin-left:40px"> // ... void AddNode( NodePtr& node ); void RemoveNode( NodePtr& node ); // ...</div>} // fichier .cpp void Node::AddNode( NodePtr& node ) {<div style="margin-left:40px">// ...</div>} void Node::RemoveNode( NodePtr& node ) {<div style="margin-left:40px">// ...</div>}
Voilà, je crois que c'est à peu près tout, j'espère ne rien avoir oublié. Tiens, une chose ; j'ai essayé de compiler sans les 2 classes héritant de Node, et là bien sûr aucun problème, ca compile, link et run
Partager