Rechercher : dans
Par :

Probleme tableau de pointeurs d'objet

Dernière réponse le 10 jan 2008 à 10:16:34 corleone, le 9 jan 2008 à 20:13:22 
 Signaler ce message aux modérateurs

Bonjour,
Je dois écrire un programme où je dois créer un tableau de pointeurs contenant l'adresse d'objets d'une classe prédéfinie "client". La définition et la déclaration du tableau me pose problème:

// restaurant.h
#ifndef RESTAURANT_H
#define RESTAURANT_H
#include <string>
#include <ctime>

using namespace std;

class restaurant { public:
int N; //nombre de places du restaurant
int nombre; //nombre de clients présents
restaurant(int pl=0) : N(pl){};
void accepte(client &cl);
};

#endif

//restaurant.cpp

#include "client.h"
#include "restaurant.h"
#include <string.h>
#include <iostream>

using namespace std;


void restaurant::accepte(client &cl){
client **liste = new *client[N]; //????
client *p;
p=&cl;
if (nombre==N){
cout <<"il ne reste plus de place disponible dans ce restaurant"<< endl;
}
else { for( client * t = liste; t<liste+nombre; t++ ){
if (t==p){
cout <<"le client est déjà présent dans ce restaurant"<< endl;
}
else {
liste[nombre]=p;//?????
nombre++;
cout <<"le client est maitenant présent"<< endl;
}
}
}
delete [] liste;
}


//les erreurs:
Compilateur: Default compiler
Exécution de g++.exe...
g++.exe "C:\Users\Henri.PC-de-Anne\Desktop\Pro\restaurant.cpp" -o "nul" -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -I"C:\Users\Henri.PC-de-Anne\Desktop\Pro" -L"C:\Dev-Cpp\lib"
C:\Users\Henri.PC-de-Anne\Desktop\Pro\restaurant.cpp: In member function `void restaurant::accepte(client&)':
C:\Users\Henri.PC-de-Anne\Desktop\Pro\restaurant.cpp:10: error: expected identifier before '*' token
C:\Users\Henri.PC-de-Anne\Desktop\Pro\restaurant.cpp:10: error: expected `,' or `;' before "client"
C:\Users\Henri.PC-de-Anne\Desktop\Pro\restaurant.cpp:16: error: cannot convert `client**' to `client*' in initialization
C:\Users\Henri.PC-de-Anne\Desktop\Pro\restaurant.cpp:16: error: comparison between distinct pointer types `client*' and `client**' lacks a cast
Exécution terminée


Merci d'avance pour vos réponses

Configuration: Windows Vista
Firefox 2.0.0.11
dev c++

Meilleures réponses pour « probleme tableau de pointeurs d'objet » dans :
[Windows XP] Points de restauration Voir1 - Points de restauration et données personnelles 2 - Vérifier le service 3 - Paramétrer les partitions à restaurer 4 - Remarque 5 - Taille de la sauvegarde et nettoyage 6 - Créer un point de restauration 7 - Restaurer un point de...
[Gestionnaire de périphériques] Point d'exclamation jaune VoirDans le gestionnaire des périphériques de Windows, une ligne apparaît avec un point d'exclamation dans un triangle jaune. Cela signifie qu'un périphérique branché sur l'un des ports USB de l'ordinateur n'est pas reconnu car le pilote approprié n'a...
[Sécurité] Points de restauration intensifiés Voir1. Création des points de restauration 1.1. Automatiquement 1.2. Manuellement 1.2.1 Sous XP 1.2.2. Sous Vista 2. Suppression des points de restauration 2.1. Automatiquement 2.2. Manuellement 2.2.1. Sous XP 2.2.2. Sous Vista À voir...
Java - Les objets VoirLa création d'objets Un objet est une instance de classe, la création d'objets s'appelle donc l'instanciation. Cette instanciation se fait grâce à l'opérateur new suivi du nom de la classe à instancier et de parenthèses contenant les paramètres...
Javascript - L'objet String VoirLes particularités de l'objet String string est un mot anglais qui signifie "chaîne", il s'agit en fait de chaîne de caractères. L'objet String est un objet qui contient un certain nombre de propriétés et de méthodes permettant la manipulation...

1

 SebManfred, le 10 jan 2008 à 10:16:34
  • +1

Salut,
c'est normal, tu n'alloue pas d'espace mémoire pour ton tableau, mais pour un pointeur vers ton tableau.
ce qu'il faudrait que tu fasse, c'est créer un tableau par un client *maliste = new client[N];, qui te retourne un pointeur vers ton tableau, puis récupérer l'adresse de ton pointeur, par client **liste = &maliste; et tu devrais retomber sur tes pieds
je n'ai pas regardé le reste de ton code, je ne sais donc pas si c'est comme ça qu'il faut l'utiliser, mais par rapport à ta déclaration, c'est comme ça qu'il faut faire

Répondre à SebManfred