10 lignes C++ avec templates qui ne compilent pas - C++ - Programmation
Marsh Posté le 18-02-2008 à 14:32:29
c'est pas juste
template <typename T>
class Child : public Parent
{
...
}
Marsh Posté le 18-02-2008 à 14:35:32
Non, voici le résultat
Code :
|
Code :
|
Marsh Posté le 18-02-2008 à 14:37:30
...et this->_property, ça marche?
Marsh Posté le 18-02-2008 à 14:41:14
Ouais ça marche
Merci pour ton aide.
Ptain mais c'est quoi, c'est un bug de gcc ?
Marsh Posté le 18-02-2008 à 14:42:25
ya p-e une raison quelque part, mais je l'ignore - je te laisse chercher.
Marsh Posté le 18-02-2008 à 14:46:04
ReplyMarsh Posté le 18-02-2008 à 19:44:54
Non c'est normal. Ici la _property n'appartient à un contexte dépendant. Donc le compilateur regarde dans Child, puis dans ::. Pour que ça soit valide, tu doit spécifier le contexte avec this pour remettre à plus tard (à l'instantiation du template) la recherche de _property.
Marsh Posté le 18-02-2008 à 20:04:50
Pourquoi le compilateur ne regarde-t-il pas dans Parent? J'imagine qu'il y a une bonne raison mais ca me parait pas evident...
Marsh Posté le 20-02-2008 à 18:37:41
Ace17 a écrit : Pourquoi le compilateur ne regarde-t-il pas dans Parent? J'imagine qu'il y a une bonne raison mais ca me parait pas evident... |
Parce que tant que ton template n'est pas instancié, il n'y nulle part où regarder (on peut imaginer différentes spécialisations de Parent, certains n'ayant pas de membre _property). En explicitant this->, tu forces la résolution l'instanciation.
Marsh Posté le 18-02-2008 à 14:29:40
Salut à tous,
J'ai un problème avec les lignes de code C++ suivantes qui ne compilent pas :
Je lance la compilation avec la commande g++ -c monFichier.cpp sous Cygwin.
Version de g++ : 3.4.4
A noter que ça ne compile pas non plus avec la v3.4.2 de g++ sous Sun Solaris; en revanche ça compile sous Windows avec Visual Studio v6.0.
J'ai l'erreur suivante :
Avez-vous une idée d'où provient l'erreur ? A noter que si je vire les attributs templates, le code compile.
Merci.
---------------
Paléoanthropologie, évolution de l'espèce humaine et préhistoire