CLASS LISTCHAINEE : LC

Messages postés
409
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011
- - Dernière réponse : NitRic
Messages postés
409
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011
- 28 oct. 2006 à 21:50
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/40110-class-listchainee-lc

Afficher la suite 
NitRic
Messages postés
409
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011
-
en C++, on utilise <cstdio>, <cstdlib>, etc. et non <stdio.h>, <stdlib.h> => namespace

n'ouvres pas les namespaces à tout le projet, sinon ca n'a plus aucune utilité

tes variables 'a' et 'b' dans le main(), pourquoi les avoir déclarés dans un nouveau scope/block/.. ??? j'arrive pas à comprendre pourquoi ...

// bonne habitude à prendre
class Object
{
public:
Object() : ptr1(NULL), ptr2(NULL) // initialisation ici
{
}
~Object()
{
// ...
}

private:
type* ptr1;
type* ptr2;
};

les attributs de ta classe LCE, pourquoi les avoir mis public???

class LCE
{
public:
LCE() : /* initialisation ici */
{
}
~LCE()
{
}

type getSuivant() const
{
// retourne le suivant
}
type getPrecedent() const
{
// retourne le précédent ici
}

void setSuivant(const LCE& suivant)
{
// assigne un nouveau suivant
}

//
// etc.
//

private:
// tes attributs ici
};

passage par référence !!! d'après ce que j'ai vu, tu l'utilises pas, tout est par copie, ca devient vite très lourd, toujours et toujours des copies ...

template< ... >
class LC
{
public:
// ...
bool AjouterElement(const LCE< ... >& lce); // aucune copie, on demande une référence directe à l'objet donné
// ...
};

pour tes fichiers .h(headers), mets ta condition(macro) au début du fichier et inclus les fichiers après

#ifndef _NOM_DU_FICHIER_H
#define _NOM_DU_FICHIER_H

#include < ... >
// etc.

// code ...

#endif // #ifndef _NOM_DU_FICHIER_H

en passant, un std::vector n'est pas une liste mais un array/tableau, pour les listes tu as <list> ....

*** truc pour: m=(m<i)?i:m;
*** peut être facilement remplacé par:
if (m < i) {
m = i;
}
plus court/rapide/efficace/etc.

dans ton cas, tu laisses place à deux assignations, peu importe le résultat de la condition, si m<i on assigne i à m sinon on re-assigne m à m(trouvez l'erreur)
le compilateur devrait être bon pour se débrouiller mais il ne faut pas se fier toujours sur ce dernier ...

plutôt que d'utiliser getch() et compagnie, pourquoi ne pas utiliser, par exemple, std::cin.get(); ??

voilà, c'est pas regarder tout le code mais c'est ce que j'ai remarqué de ce que j'ai vu

tu devrais repenser le tout, revoir la structure, ce dont tu as besoin et/ou non, etc.
de quelle facon il faudrait le faire, quelle serait la meilleur méthode à employer, etc. y aller classe / classe, méthode / méthode ...

bref, voilà