bethoring
Messages postés30Date d'inscriptionmardi 1 juin 2004StatutMembreDernière intervention29 mai 2005
-
4 juin 2004 à 21:01
StanOfSky
Messages postés43Date d'inscriptionmardi 30 mars 2004StatutMembreDernière intervention 7 octobre 2006
-
7 juin 2004 à 13:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
StanOfSky
Messages postés43Date d'inscriptionmardi 30 mars 2004StatutMembreDernière intervention 7 octobre 2006 7 juin 2004 à 13:42
ca force pas le inline de mettre les déclarations dans les headers...
ca recopie juste tout le code de la "librairie" dans l'executable alors que certaines fonctions ne sont peu etre pas utilisés donc pas necessaires.
entt cas je vois pas trop en quoi c du c++ a part le fait que les fonctions soient définies a l'interieur d'une classe mais cela aurai eu le meme effet de définir une structure
struct liste {
node* tete ;
node *fin ; };
puis de définir les fonctions en dehors...
de plus cette classe n'est pas du tout générique (pas de template) et fonctions d'entrée-sorties définies dans la classe : en somme elle est inutilisable puisqu'il faut faire une app console pour pouvoir insérer a la position voulue
using namespace std; // ca c pas bien, fau ecrire std:: devant chaque fonctions pour po avoir de pb ensuite si ton header est inclu dans un projet plus gros
entre parenthese qd tu mets using namespace std; dnas un .h ca veu dire que le namespace std sera utilisé pour toute application qui utilisera ce header ce qui est tres mauvais si l'utilisateur de ton .h ne le veut pas...
donc a refaire soit en c, soit en c++ (avec templates)
enlever toutes les fonctions de la iostream (faire une source a part pour entrée-sorties)
pour ta fonction trier si tu fait du c++ defini des operateur des comparaison au lieu de taper dans la structure, ca fai plus structuré, et tu peu meme utiliser les fonctions standart de tri mais bon pares c un choix
BlackGoddess
Messages postés338Date d'inscriptionjeudi 22 août 2002StatutMembreDernière intervention14 juin 2005 7 juin 2004 à 09:58
mettre les définitions dans les déclarations de classes force l'inlining o_O ? j'ignorais :o c spécifique à certains compilos ou c'est standard ?
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 5 juin 2004 à 12:42
tu mets les méthodes dans le corps de la déclaration de la class, du coup elles sont toutes déclarées inline, ce qui veut dire que chaque fois que tu appelles une des méthodes, le compilo remplace la ligne de ton code par le contenu de la méthode. Dans un gros programme, tu vas avoir un exe monumental O_o
Donc -> séparer en deux fichiers (décla et implémentation), parce que même si tu mets les implémentations hors de la décla de la classe mais dans le même fichier, c'est pas propre puisque les méthodes sont compilées dans les ficheirs objets de TOUS les .cpp qui incluent ta classe liste, alors que si tu mets les implémentations dans un ficheir séparé, seules les décla sont insérées dans tous les .cpp, et c'est largement suffisant (en plus, si tu modifies ta classe liste, tu ne devras recompiler que liste.cpp et pas tous les fichiers du projet (à condition de ne pas avoir modifié liste.h évidemment)
comme l'a dit Pamaury, utilise les templates, parce que là tu es borné aux "int" et c'est insatisfaisant.
BlackGoddess
Messages postés338Date d'inscriptionjeudi 22 août 2002StatutMembreDernière intervention14 juin 2005 5 juin 2004 à 00:16
pas bien de mélanger :o
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 4 juin 2004 à 22:53
oui, c'est du "vieux" c++
et ca c'est meme du c
struct node{
int info ;
struct node *suivant ;
} ;
Pamaury
Messages postés341Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention17 juin 20083 4 juin 2004 à 21:57
quitte à faire une liste chqînée autant la faire générique, c'est pas bien plus dur et terriblement plus efficasse . En plus la STL fait très bien cela pour moi . Sinon c'est bient mais je trouve qu'il y a beaucoup de variables temporaires(perso j'en ai fait une générique en C et il n'y en a pas autant) .
bethoring
Messages postés30Date d'inscriptionmardi 1 juin 2004StatutMembreDernière intervention29 mai 2005 4 juin 2004 à 21:01
Eh non de dieu.
Jsuppose o moin que c fred ki a marké ca vu ke c compilé sous borland c++.
J'ai essayé ton programme,sympa pour faire de la gestion.
A ESSAYER A TOUT PRIX!!
Destiner surtout au expert du c++!!
bethoring
Messages postés30Date d'inscriptionmardi 1 juin 2004StatutMembreDernière intervention29 mai 2005 4 juin 2004 à 21:01
Eh non de dieu.
Jsuppose o moin que c fred ki a marké ca vu ke c compilé sous borland c++.
J'ai essayé ton programme,sympa pour faire de la gestion.
A ESSAYER A TOUT PRIX!!
Destiner surtout au expert du c++!!
7 juin 2004 à 13:42
ca recopie juste tout le code de la "librairie" dans l'executable alors que certaines fonctions ne sont peu etre pas utilisés donc pas necessaires.
entt cas je vois pas trop en quoi c du c++ a part le fait que les fonctions soient définies a l'interieur d'une classe mais cela aurai eu le meme effet de définir une structure
struct liste {
node* tete ;
node *fin ; };
puis de définir les fonctions en dehors...
de plus cette classe n'est pas du tout générique (pas de template) et fonctions d'entrée-sorties définies dans la classe : en somme elle est inutilisable puisqu'il faut faire une app console pour pouvoir insérer a la position voulue
using namespace std; // ca c pas bien, fau ecrire std:: devant chaque fonctions pour po avoir de pb ensuite si ton header est inclu dans un projet plus gros
entre parenthese qd tu mets using namespace std; dnas un .h ca veu dire que le namespace std sera utilisé pour toute application qui utilisera ce header ce qui est tres mauvais si l'utilisateur de ton .h ne le veut pas...
donc a refaire soit en c, soit en c++ (avec templates)
enlever toutes les fonctions de la iostream (faire une source a part pour entrée-sorties)
pour ta fonction trier si tu fait du c++ defini des operateur des comparaison au lieu de taper dans la structure, ca fai plus structuré, et tu peu meme utiliser les fonctions standart de tri mais bon pares c un choix
7 juin 2004 à 09:58
5 juin 2004 à 12:42
Donc -> séparer en deux fichiers (décla et implémentation), parce que même si tu mets les implémentations hors de la décla de la classe mais dans le même fichier, c'est pas propre puisque les méthodes sont compilées dans les ficheirs objets de TOUS les .cpp qui incluent ta classe liste, alors que si tu mets les implémentations dans un ficheir séparé, seules les décla sont insérées dans tous les .cpp, et c'est largement suffisant (en plus, si tu modifies ta classe liste, tu ne devras recompiler que liste.cpp et pas tous les fichiers du projet (à condition de ne pas avoir modifié liste.h évidemment)
comme l'a dit Pamaury, utilise les templates, parce que là tu es borné aux "int" et c'est insatisfaisant.
5 juin 2004 à 00:16
4 juin 2004 à 22:53
et ca c'est meme du c
struct node{
int info ;
struct node *suivant ;
} ;
4 juin 2004 à 21:57
4 juin 2004 à 21:01
Jsuppose o moin que c fred ki a marké ca vu ke c compilé sous borland c++.
J'ai essayé ton programme,sympa pour faire de la gestion.
A ESSAYER A TOUT PRIX!!
Destiner surtout au expert du c++!!
4 juin 2004 à 21:01
Jsuppose o moin que c fred ki a marké ca vu ke c compilé sous borland c++.
J'ai essayé ton programme,sympa pour faire de la gestion.
A ESSAYER A TOUT PRIX!!
Destiner surtout au expert du c++!!