Rechercher : dans
Par :

[C++] Problème déclaration tableau / classes

Dernière réponse le 13 nov 2006 à 16:04:11 Sammy59400, le 10 nov 2006 à 22:05:26 
 Signaler ce message aux modérateurs

Bonjours chers posteurs et consulteurs de ce forum. Je suis nouveau et fraichement identifié et voici mon probleme.

Je travaille sur un probleme orienté objet sur C++ ou il me faut simuler le comportement de moutons et de loups sur un environnement.

J'ai defini une classe mobile dont les instanciations seront des mobiles referencés par leur coordonnées ...

Je crée une classe liste qui sera un tableau de mobiles. Voici le code de la definition de la liste :

class liste
{   int taille, sommet;
     mobile tab;
public:
     liste(int=20);
     ~liste();
    // autres methodes de la classe liste ....
};

liste::liste(int t)
{    tab = new mobile[t];    
     taille = t;                         
     sommet = -1;
}

Voici le problème de compilation au constructeur de liste :
"no matching function for call to mobile::mobile()" (constructeur de mobile)

D'ou vient le problème ??
Aidez moi

Merci

Sammy

Meilleures réponses pour « [C++] Problème déclaration tableau / classes » dans :
Le mot-clé static ou les attributs et méthodes de classe en POO Voir(NOTE: Cet article explique la signification du mot-clé static au sein d'une classe. La signification de "static" en C n'a par exemple rien à voir.) Vous êtes débutant en programmation orientée objet. En Java, en C++...ou que sais-je encore,...
Les piles en langage C VoirLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage...
Les variables en C++ VoirLes variables en C++ 1. Les différents types de variables 1.1 bool 1.2 char 1.3 unsigned short int 1.4 short int 1.5 unsigned long int 1.6 long int 1.7 int (16 bits) 1.8 int (32 bits) 1.9 unsigned int (16 bits) 1.10 unsigned int (32...
Les structures en langage C++ VoirDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...
Les structures en langage C VoirDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...

1

kij_82, le 10 nov 2006 à 22:56:04

J'ai pas fait de C++, mais en Java si tu fais pas de constructeur ca va pas aller, alors j'imagine qu'en C++ c'est pareil ^^

(Pour ta classe mobile je parle, pas pour celle que tu as écrite)

~ iclic @ gauch,iclic, iclic @ droate, iclic, iclic
et ya pas de bôg môsieu ! ~

Répondre à kij_82

2

carkiasis, le 11 nov 2006 à 01:21:37

Salut,

"no matching function for call to mobile::mobile()" veut logiquement dire que ton constructeur par défaut de ta classe mobile n'est pas défini...
Il te faut un truc du genre :

mobile::mobile() { //ce que tu veut par defaut pour tes attributs }


Sinon, qu'est ce que veut tu faire avec ca : "tab = new mobile[t]; " ?
Tu veux que tab sois un tableau de mobile de taille 7?? Alors a ce moment la faut plutot ecrire plus haut dans les declarations : mobile tab[]. (ou un truc du genre).

Répondre à carkiasis

3

nicO.2x45, le 13 nov 2006 à 09:21:22

Bonjour,

COncernant le constructeur de liste il ne devrait pas y avoir de probleme, tu fais une surcharge.

Ton probleme vient du fait que la classe liste ne connait pas la classe mobile, d'où un echec de l'appel au constructeur.
Rajoute le .h de ta classe mobile dans ton .cpp de liste, du style : #include <mobile.h>

Ensuite, si tu n'as pas mis de code dans ton constructeur de mobile, il faudra ne pas oublier de définir au minimum la definition de la classe, et le code minimum pour qu'il sache quoi faire !!
nicO.2x45 alias Le_Foudroyeur :)

Répondre à nicO.2x45

4

mamiemando, le 13 nov 2006 à 09:34:27

class liste
{   int taille, sommet;
     mobile tab; // classe mobile pas définie
public:
     liste(int=20);
     ~liste();
    // autres methodes de la classe liste ....
};

liste::liste(int t)
{    tab = new mobile[t];   // ça, ça ne va pas non plus 
     taille = t;                         
     sommet = -1;
}


Bon je te conseile de repartir sur un truc beaucoup plus simple et beaucoup plus simple. Pour manipuler une liste :
#include <list>

struct mobile{
  int plop;
  explicit mobile(int plop0=0):plop(plop0){}
};

typedef struct mobile mobile_t;

int main(){
  std::list<mobile_t> ma_liste;
  ma_liste.push_back(mobile_t(1));
  ma_liste.push_back(mobile_t(2));
  ...
  return 0;
}

Pour plus d'info sur les std::list :
http://www.sgi.com/tech/stl/List.html

Bonne chance

Répondre à mamiemando

5

nicO.2x45, le 13 nov 2006 à 12:19:35

Bonjour Mamiemando,
Tiens je savais que les listes de ce genre étaient dispo en java dans la derniere update de l'API java, mais je savais pas pour le c/c++ !!!

Interessant.....A potasser !!! :D nicO.2x45 alias Le_Foudroyeur :)

Répondre à nicO.2x45

6

 mamiemando, le 13 nov 2006 à 16:04:11

Il y a plein d'autrezs classes C++ bien plus intéressantes dans la STL. Notamment les vector, les set, et les map...

Répondre à mamiemando