[C++] Rigueur du compilateur par rapport aux templates

Rigueur du compilateur par rapport aux templates [C++] - C++ - Programmation

Marsh Posté le 21-05-2007 à 10:22:53    

Bonjour,
 
j'essaie de compiler une application C++ utilisant X3D Toolkit 1.2 (http://sourceforge.net/projects/x3dtoolkit) et j'obtiens plusieurs erreurs de ce type :
 
- erreur: type 'X3DTK::X3DAbstractNode' incomplet utilisé dans un spécificateur de noms imbriqué
- erreur: invalid use of undefined type 'struct X3DTK::X3DAbstractNode'
- erreur: forward declaration of 'struct X3DTK::X3DAbstractNode'
 
On m'a dit que c'était du au fait que le compilateur que j'utilise (g++ 3.4.6) implemente plus rigoureusement les templates, ce qui impose de declarer "mieux" les types utilises dans une class template. Savez comment résoudre ce type de problème (méthode générique peut-etre...) ?
 
Merci.

Reply

Marsh Posté le 21-05-2007 à 10:22:53   

Reply

Marsh Posté le 21-05-2007 à 12:58:59    

je pense qu'il doit manquer des directives typename dans certains typedef de classes templates. Sans code je peut pas trop en dire plus

Reply

Marsh Posté le 21-05-2007 à 14:31:54    

:hello:
 
Voilà l'erreur renvoyée dans son contexte, et quelques liens vers les fichiers correspondants, si vous avez un peu de temps pour jettez un oeil... j'ai essayé quelques trucs mais ce n'est pas très concluant :/
 

Code :
  1. ../../include/X3DSFNodeFunctor.inl: In member function `bool X3DTK::SFNodeFunctor<T, V>::setNode(X3DTK::X3DAbstractNode*, X3DTK::X3DAbstractNode*)':
  2. ../../include/X3DSFNodeFunctor.inl:20: erreur: type « X3DTK::X3DAbstractNode » incomplet utilisé dans un spécificateur de noms imbriqué


 
X3DAbstractNode.h
X3DSFNodeFunctor.h
X3DSFNodeFunctor.inl
 
Merci pour toute aide !

Reply

Marsh Posté le 21-05-2007 à 16:32:17    

Bon en fait le code que j'essaie de compiler n'est pas compatible avec gcc 3.4 que j'utilises... problème apriori résolu donc, sauf si ça ne marche toujours pas demain quand j'aurai récupéré les MAJ du CVS.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed