begin process at 2012 05 29 04:04:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Instance de classe (question stupide)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Instance de classe (question stupide)

mardi 22 février 2005 à 18:30:05 | Instance de classe (question stupide)

CyberP

Une petite question idiote que je ne me suis jamais posée (je n'ai jamais rencontré ce problème auparavant d'ailleurs)
J'ai ce code :

struct Objet {
  void* pointeur;
  Objet(void*);
};

Maintenant je veux créer un objet Objet :
Objet* obj = new Objet(new int(0));
Mais si je veux créer un tableau comme cela ?
Objet* obj = new Objet[5]; ne marche pas puisqu'il n'y a pas de fonction constructeur qui ne prenne pas de paramètres dans Objet (et je ne peux pas en créer parce que mon vrai code est un peu plus compliqué)

Sauf que :
Objet* obj = new Objet(new int(0))[5]; ne marche pas
Objet* obj = new Objet[5](new int(0)); ne marche pas

Alors comment faire ?

CyberP,
Celui qui dit que toute question a une réponse
mardi 22 février 2005 à 19:39:49 | Re : Instance de classe (question stupide)

steve_clamage

Réponse acceptée !
N'utilises pas de void* en c++, ce n'est pas comme en c.

Pour ton probleme,

Soit tu alloues avec new[] (qui appel le constructeur par defaut de chaque instance) puis tu parcours le tableau en appelant le constructeur souhaité. Pas trés performant car constructeur appelé 3 fois (en comptant la copie temporaire lors de l'affectation).

Soit tu utilises std::vector (reserve + push_back avec appel du bon constructeur), je tee conseil ca si tu débute

La solution à la base c'est d'allouer en utilisant un des allocateurs du c++ (ou malloc) et de construire l'objet via un placement new, mais dans ce contexte la c'est tres bien fais par vector
mardi 22 février 2005 à 19:59:19 | Re : Instance de classe (question stupide)

CyberP

Hmm de toutes façons je ne peux pas prendre de new[] parce que je ne peux pas faire de constructeur par défaut (parce que l'objet est dans un tableau de pointeurs autre part et va avoir des appels de fonctions d'un autre thread et si le truc est pas initialisé ça va tout faire planter)
Je vais voir pour std::vector

Notes que j'ai juste inventé quelque chose avant, je n'ai pas fait attention à void* ou pas void*

CyberP,
Celui qui dit que toute question a une réponse
mardi 22 février 2005 à 20:11:52 | Re : Instance de classe (question stupide)

steve_clamage

si tu ne fais pas de constructeur par défaut, déclare le plutot en privé

struct Objet
{
private:
Objet(); // pas la peine de mettre {} (de le définir)
};




Cette discussion est classée dans : créer, int, objet, question, obj


Répondre à ce message

Sujets en rapport avec ce message

Créer un vecteur normal [ par voodoo1 ] Bonjour, j'aimerais savoir comment je peux faire pour crééer un vecteur normal à partir d'un fichier obj qui ne contient pas de vecteur normal.J'ai cr Besoin d'aide pour créer des onglets [ par JazzBerri ] g insérer la source suivante a mon programme et lorsque je lance l'application ma boite de dialogue apparait mais mes onglets ne sont toujours pa crée Question simple sur les tableaux [ par LordBob ] Bonjours a tous,pourquoi quand j'écris le code ci-dessous:#include int main(){ int i; char tab[6] = "bonjour"; for (i créer une fenetre en plus d'une fenetre glut [ par ldllaurent82 ] Bonjour,J'aimerais pouvoir créer un interface (avec boutons et autres) en plus de ma fenetre opengl ouverte avec glut.Le problème c'est que je ne peux Question toute bete sur PageControl [ par superlofo ] Bonjour,Je me remets doucement au C++ et pour cela j'utilise builder c++.J'essaie de créer une appli et dedans j'ai créer un pagecontrol avec 2 pages rotation d'un objet 2d [ par azkab ] bonjour,bon j ai un probleme avec mon programme, j ai passé des heures la dessus mais en vain.dans mon programme je cree un rectangle et je desire eff Appeler une méthode d'un objet parent appelant? [ par antoine_1977 ] Bonjour à tous,Ma question va peut-être paraitre idiotes à certains mais bon... si ils savent y répondre...J'ai une instance d'objet graphique (appelo question pour créer un tableau [ par Troape ] J'ai créer un prog en C sous dev-cpp qui permet d'afficher 7 nombres au hasard. Je me suis rendu compte que des nombres peuvent s'afficher plusi comment créer un horloge en C ?! [ par starjab ] je débute et j'ai commencé à créer une horloge en C ..qu'en pensez vous??!!#include #include int main(){    int h ;    whil Simple Question [ par tibob51 ] Bonjour a tous,le code suivant:int *i;for (int a=0;a{i=new int;...}me créera un nouveau int et detruira l'ancien.....?Je suis plus sûr<B


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales