Probleme tableau de pointeurs d'objet

Fermé
corleone - 9 janv. 2008 à 20:13
SebManfred Messages postés 484 Date d'inscription mardi 28 août 2007 Statut Membre Dernière intervention 20 mai 2011 - 10 janv. 2008 à 10:16
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

1 réponse

SebManfred Messages postés 484 Date d'inscription mardi 28 août 2007 Statut Membre Dernière intervention 20 mai 2011 128
10 janv. 2008 à 10:16
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
3