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...
[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...
Comment changer vos pointeurs de souris VoirSous Windows Vista, si vous désirez changer les pointeurs de souris, voici comment faire: Faire un clic droit sur votre bureau et choisir "Personnaliser". Cliquez ensuite sur "Pointeurs de souris". Sous l'onglet "Pointeurs", faites votre...
Les objets en langage C++ VoirLa création d'objets En C++, il existe deux façons de créer des objets, c'est-à-dire d'instancier une classe : de façon statique de façon dynamique La création statique La création statique d'objets consiste à créer un objet en lui affectant un...
Javascript - l'objet Array VoirLes particularités de l'objet Array L'objet Array est un objet du noyau Javascript permettant de créer et de manipuler des tableaux. Voici la syntaxe à utiliser pour créer une variable tableau : var x = new Array(element1[, element2, ...]); Si...

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