Constructeur qui ne fonctionne pas...

Résolu
Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007 - 12 août 2005 à 17:18
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 - 13 août 2005 à 11:33
Bonjour,



J'ai fait une classe mais mon constructeur ne fonctionne pas ??


class obj_line{

public:



bool isalive;

float yspeed,zspeed;

GLuint len;

GLfloat x,y,z;

obj_sign * sign;



// Constructeur

obj_line(){

isalive=0;

system("pause");

}

};



Est-ce que qqun pourrait m'aider svp.

6 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
12 août 2005 à 17:32
lines = new obj_lines();


Tu ne peux pas faire un malloc dans ce cas...


sinon, tu peux faire:


obj_lines lines;

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
3
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
12 août 2005 à 17:20
Pourquoi dis-tu qu'il ne fonctionne pas?

Difficile de juger avec ce que tu nous montre...

Un exemple de code serait le bien venu...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007
12 août 2005 à 17:24
Voilà un peu + de code...



class obj_line{

public:



bool isalive;

float yspeed,zspeed;

GLuint len;

GLfloat x,y,z;

obj_sign * sign;



// Constructeur

obj_line(){

isalive=0;

system("pause");

}

};



int NbLines = 100;

obj_line * lines;



int main(int argc,char **argv){



// Allocation de mémoire

lines = (obj_line *)malloc(sizeof(obj_line)*NbLines);



}



(Pour info je travaille avec Dev-cpp)
0
Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007
12 août 2005 à 17:46
Ok, merci beaucoup pour ton aide rapide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
13 août 2005 à 01:05
oui, malloc n'appelle pas de constructeurs

new fait un malloc et appelle le constructeur



exemple faisant cohabiter les 2:



un tableau de pointeurs dont les elts sont créés par new



exemple en pratique: liste de chaines:



cf BLBString ds quasi toutes mes sources

___________________________________________________________
Magicalement
Nono
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
13 août 2005 à 11:33
Tu peux aussi allouer un pointeur sans construire avec new, utilisant
ainsi l'allocateur par défaut du C++ qui est spécifié plus performant
que malloc du C. Bref dans tout les cas c'est mieux d'utiliser new en
C++, vu qu'on est en C++.



template <typename Type>

inline Type * alloc(size_t size) { return reinterpret_cast<Type *>(new char[sizeof(Type) * size]); }



obj_line * o = alloc<obj_line>(10); // pas d'appel du constructeur





Pour les conteneurs STL, il est possible d'utiliser std::malloc_alloc,
un allocateur construit sur malloc/free, cette possibilité est offerte
uniquement dans le but de pouvoir utiliser certaines extensions du C
permetttant notament de detecter les fuites et basées autour de malloc.
0
Rejoignez-nous