Comprend pas ce que me dis le compilateur :)

Résolu
Math3o Messages postés 14 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2007 - 20 déc. 2005 à 16:34
Math3o Messages postés 14 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2007 - 20 déc. 2005 à 17:30
Salut à tous !

Voilà j'vous écris car j'ai un petit problème avec un projet que je dois réaliser pour les cours de programmation où l'on doit gérer un système de liste ( une sort de liste en deux dimensions). On a une liste ( class ensElem ) qui contient un pointeur vers un ensemble d'entier ( class element ) et un pointeur vers l'ensemble d'élément suivant. voici donc ma fonction qui sert a ajouter un nouvel ensemble d'entier en limitant l'utilisation de la mémoire ( en trouvant des suffix communs dans 2 ensemble d'entier différents ) :

class element;
typedef element* ensemble;


class element{
public :
int info;
int refcount;
element* next;
};


class ensElem;
typedef ensElem* ensEns; // Ensemble d' ensemble


class ensElem{
public :
ensemble head;
ensElem* next;
};


ensElem::ensElem ( ensemble e , ensEns ee )
{
head = e;
ensEns = ee;
}


include
using namespace std;
const int NULL = 0;


/////////////////////////////////////////////////////////////////////////////////////
/// Fonction n°1
/////////////////////////////////////////////////////////////////////////////////////


void ajout ( ensEns & ee, ensemble e )
{
ensemble pe, test, p1save, p2save;
int Long, LongSave = 0;
for ( ensEns p1 = ee ; p1 !=NULL ; p1 = p1->next )
{
test = p1->head;
pe = e;
Long = 0;
while ( test != NULL && e != NULL )
{
if ( pe->info == test->info )
{
pe = pe->next;
test = test->next;
if ( Long == 0 )
p1save = test;
Long++;
}
else
{
Long = 0;
if ( pe->info > test->info )
test = test->next;
else
pe = pe->next;
}

}
if ( Long > LongSave )
{
LongSave = Long;
p2save = p1save;
}
}
if ( LongSave != 0 )
{
if ( e->info == p2save->info )
{
e = p2save;
p2save->refcount++;
}
else
{
while ( e->next->info =! p2save->info )
e = e->next;
e->next = p2save;
p2save->refcount++;
}
}
while ( ee->next != NULL )
ee = ee->next;
ee->next = new ensElem ( e , NULL );

}

A la ligne marquée de rouge , le compilateur me dis :

`ensElem::ensElem(element*, ensElem*)' does not match any in class `ensElem'

je ne comprend pas ...

et a la ligne marquée de vert , le compilateur me dis également une chose que je ne comprend pas :

candidates are: ensElem::ensElem()
ensElem::ensElem(const ensElem&)

Pourriez vous m'aider svplé :) car j'ai beau chercher je ne trouve pas !

ps : si vous voyez une erreur dans ma fonction en ce qui concerne le résultat , ce n'est pas grave. je veux juste comprendre ce ke me dis le compilateur :) merci !

10 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 déc. 2005 à 17:12
ensEns n'est pas un pointeur, c'est un nom de type, équivalent à ensElem*. C'est donc exactement comme si tu écrivais ensElem* = ee; ce qui n'a aucun sens, tu es d'accord.
Tu dois donc remplacer cette ligne par next = ee;
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 déc. 2005 à 17:28
#include
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 déc. 2005 à 16:53
Rouge: tu as oublié de déclarer le constructeur dans ta classe, tu dois ajouter
ensElem ( ensemble e , ensEns ee );
Vert: corrige déja la rouge et on verra
0
Math3o Messages postés 14 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2007
20 déc. 2005 à 16:58
Ce la ne marche toujours pas ... il m'affiche toujours la même chose.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 déc. 2005 à 17:03
Ah oui j'avais pas vu:
ensEns = ee; // Ca ne veut rien dire, ensEns est un nom de type!
0
Math3o Messages postés 14 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2007
20 déc. 2005 à 17:05
ah non lol ... c'est moi qui suis bête ! Donc la ca marche :)


et la il me reste ceci dans mon compilateur :


In constructor `ensElem::ensElem(element*, ensElem*)':
expected primary-expression before '=' token

At global scope:
expected constructor, destructor, or type conversion before '<' token
expected `,' or `;' before '<' token

voila merci d'avance déjà :)
0
Math3o Messages postés 14 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2007
20 déc. 2005 à 17:08
je dois mettre quoi alors ? ( a la place de ensEns car ensEns est un pointeur vers un ensemble d'élément )
0
Math3o Messages postés 14 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2007
20 déc. 2005 à 17:14
oh ben ui .. ke je suis bête !! lol en plus c'est déclaré dans ma classe n'importe koi

Merci beaucoup en tout cas ! C'est toujours sur des bêtes erreurs qu'on bloke ;)
0
Math3o Messages postés 14 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2007
20 déc. 2005 à 17:25
euh juste encore un truc :

pour ceci :

ensElem::ensElem ( ensemble e , ensEns ee )
{
head = e;
next = ee;
}


include

le compilateur me dis :

expected constructor, destructor, or type conversion before '<' token
expected `,' or `;' before '<' token

??
0
Math3o Messages postés 14 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2007
20 déc. 2005 à 17:30
loooooooooooooooooooooooooool kel merde je suis :D hahahahahaha
0
Rejoignez-nous