begin process at 2012 05 30 03:39:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

list iterator et polymorphisme


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

list iterator et polymorphisme

dimanche 15 mai 2005 à 18:36:42 | list iterator et polymorphisme

luhtor

Bonjour, bon j'ai un petit soucis avec les iterator.

C'est simple, j'ai une classe var_test et une classe sub_var qui dérive de var_test. Elles redéfinissent toutes les deux une fonction void eval();

     var_test t1(4); // donc je définie deux objets
     sub_test t2(2);

     std::list < var_test*> liste;
     liste.push_back(&t1);
     liste.push_back(&t2);
    
     std::list< var_test* >::const_iterator it;
    
     it = liste.begin();
     (*it)->eval();
    
     it = liste.end();
     (*it)->eval(); // <== PLANTE !

     liste.back()->eval();
     liste.front()->eval(); // <== AUCUN problème et pourtant a priori c'est le meme objet
                                     // que (*it) juste au dessus.

Je comprend pas. Voici les class vraiment très simples c'était juste pour tester.

class var_test
{
     public:
          var_test() { this->n = 0; }
          var_test(int _c) { this->n = _c;}
          var_test(const var_test & _which) { this->n = _which.n; }
          virtual ~var_test() {}
         
          virtual void eval() { std::cout << "BASE" << this->n << std::endl; }
     protected:
          int n;
};

class sub_test : public var_test
{
     public:
     sub_test() {this->n = 0; }
     sub_test(int _n) { this->n = _n; }
     sub_test(const sub_test & _which) { this->n = _which.n; }
     virtual ~sub_test() {}
    
     virtual void eval() { std::cout << "SUB" << 4*this->n << std::endl;}
};
dimanche 15 mai 2005 à 19:56:44 | Re : list iterator et polymorphisme

steve_clamage

Réponse acceptée !
end(), c'est les choux (il sert a ca)

it = liste.end();
(*--it)->eval();

pour les constructeur prend l'hbitude de faire
var_test() : n(0) {}

et tu peux factoriser ca
var_test() { this->n = 0; }
var_test(int _c) { this->n = _c;}
par
var_test(int _c = 0) n(_c){} // c'est bien un constructeur par defaut



dimanche 15 mai 2005 à 19:56:52 | Re : list iterator et polymorphisme

vecchio56

Administrateur CodeS-SourceS
end() pointe sur l'élément suivant le dernier, pas le dernier. end() est donc toujours un objet invalide. Par exemple, le méthodes find retournent end() quand un objet n'est pas trouvé.
Pour un iterateur sur le dernier element, il faut faire
it = liste.end(); it--;
ou plutot utiliser un reverse_iterator et
it = liste.rbegin()

dimanche 15 mai 2005 à 20:02:44 | Re : list iterator et polymorphisme

luhtor

Pour l'histoire des constructeurs bien sur je suis d'accord, mais c'était pas le but, c'était seulement un test pour déployer une technique grandeur nature :)
Donc a savoir end() c'est le bout du monde oke :)


Cette discussion est classée dans : test, liste, var, eval, it


Répondre à ce message

Sujets en rapport avec ce message

test et count [ par silverfr78021959 ] Bonjour,Voilà je suis entrain de faire un programme et pour tester l'existantce de certaine variable j'utilise un if avec la fonction .count.ex :      Compilation :pour professionels [ par snoopi_19ans ] J'ai vraiment trouvé l'environnement d'etude que je cherche depuis longtempsDEmande pourle sprofessionnels::<?xml:namespace prefix = o ns = Paramètres d'un executable [ par edder ] Bonjour, je suis en train sur un grand projet de génération de test tempporisés. pour le faire, il y a deux facons: la première est d'introduire a par printf scanf [ par CCJ ] Bonjour! je debute en C++(oh non pas lui !) et bien si. donc voila mon bleme je ve afficher une varible suivit de mon texte préféfini mé je n'ais pas Manipulation de base de liste box [ par Bason_sensei ] Bonjour j'aimerai savoir les bases de la manipulation des listbox j'ai deja mis des variable pour : CString et CListBox. ce que je demande est du niv UnicodeEncoding [ par zserge ] Bonjour, j'ai une commande qui donne deux résultats en .Net 1.1 et .Net1.2:UnicodeEncoding test = null;...string result = test.GetString(streamout.ToA Problème de concaténation ( débutant :p ) [ par t0ine ] Voila je voudrais concaténer des chars ==> voir plus bas . J'aimerais qu'au palindromeD se rajoute tout ce k'il y a dans la PalindromM , etc .... Si q problème urgent !! problème compilation eclipse :( [ par pioupioufou ] Bonjour cela va bientôt faire une semaine que je cherche comment résoudre mon problème mais je n'ai toujours pas réussi, alors le voici : Je suis sous Actualiser une interface [ par Bason_sensei ] Bonjour, je suis nouveau en C++ J'ai une interface, avec une liste et un texbox quand je clique sur l'un des élèments de la liste, je veut que celui c Vérification d'une chaîne [ par Arnauti ] Bonjour, je ne sais pas si mon sujet est bien mais bon .... je voudrais savoir comment faire pour vérifié une chaîne : char test[35] ; gets(test) ;


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales