Problème de declaration de sous-class - C++ - Programmation
Marsh Posté le 08-10-2004 à 08:38:35
je comprends pas trop ce que tu veux faire mais tu te mords la queue : tu veux faire une classe qui hérite d'une de ses classes imbriquées ...
Moi je te conseille tout simplement de définir Item dans namespace anonyme. Et d'utiliser des typedef pour la lisibilité.
Marsh Posté le 08-10-2004 à 09:17:47
Pareil : pour cacher du code, ici les namespaces sont carrément plus adaptés que les classes imbriquées.
Ceci-dit, c'est un vrai merdier ton truc. A ce niveau là, je commencerai à introduire des classes d'interfaces (toutes fonctions virtuelle pures quoi), ne serait-ce que pour simplifier le biniou.
En n'utilisant que des pointeurs sur Item, et en faisant dériver Item d'une classe "abstraite", tu devrais pouvoir te dépatouiller, je pense, quitte à rendre Item dépendant de sa classe Elem.
Code :
|
Marsh Posté le 08-10-2004 à 09:19:07
ah non, commence pas à saucer les zolis template avec du virtuel
Marsh Posté le 08-10-2004 à 09:35:28
Taz a écrit : ah non, commence pas à saucer les zolis template avec du virtuel |
Si c'est cool. Il parrait que c'est la dernière mode à miami. En plus, ils utilisent des boost::lambdas pour faire hype comme les programmeurs python de L.A.
Marsh Posté le 08-10-2004 à 12:18:56
Merci pour vos conseils !
Javoue que cest un peu bordelique mais cest le seule endroit du code
En fait le but est dindexer les items dune b-queue doublement liée avec un AVL, ce qui marchait très bien jusqu'à ce que jajoute une classe Index entre ma b-queue (Stock) et mon AVL dont herite maintenant Index, le but étant de pouvoir éventuellement rendre index statique pour avoir un indexer unique pour un ensemble de b-queue.
En fait javais déjà tenter de définir Item dans namespace anonyme mais comme jutilise
Code :
|
ou encore
Code :
|
il faut donc que je redéfinisse le template ditem :
Code :
|
Et donc corrige toutes les instanciations dItem, ce que je voulais justement éviter par ce que yen a un paquet, que ça rendra le code encore moins lisible et que conceptuellement cette définition ditem appartient à la stock (jai dautres définitions dItem dans dautres namespaces pour le même prog) mais bon si c la seule solution
.je me résignerai.
Marsh Posté le 08-10-2004 à 03:50:38
Bonjour à tous,
jai un problème dont je ne trouve pas de solution ;
Prenons un exemple :
Ceci ne compile évidement pas ; au moment de la déclaration de la class Stock, la class Item na pas encore été définie or celle-ci est utilisée pour etre passé en argument de template à la class (index) dont herite Stock.
( => « 'Item' : undeclared identifier »)
donc je déclare Item comme-ce ci en début de code :
Mais mon compilo menvoit :
=> 'Item' : is not a member of 'Stock<TypeA, TypeB, TypeC>'
Et là je comprend pas ; peut être ai-je mal déclaré les classes mais me semble avoir un peu tout tester pour être sur que ce nétait pas une faute de syntaxe (le « template < class TypeA, class TypeB, class TypeC, class Type> » est un peu bizarre mais je sais pas comment faire autrement ? ) .
Donc voilà si quelquun à une super solution à me proposer, ça marrangerai bien.
Jespère avoir été claire.
Merci davance.