On peut ajouter un constructeur à une struct? [C] - Programmation
Marsh Posté le 20-02-2002 à 20:34:50
non, à la limite tu peux faire un pointeur de fonction qui va créer une structure, par exemple:
#include <stdlib.h>
struct maStruct
{
struct maStruct *(*constructeur)();
}
struct maStruct *constructeur()
{
struct maStruct *retval;
retval=(maStruct *)malloc(sizeof(maStruct));
retval->constructeur=constructeur;
return retval;
}
int main()
{
struct maStruct struct1,*struct2;
struct1.constructeur=constructeur;
struct2=struct1.constructeur();
free(struct2);
return 0;
}
si non fait du C++
Marsh Posté le 20-02-2002 à 21:20:27
Oki, c'est ce que je pensais. Donc à partir de là, j'aimerais savoir, au niveau de la rapidité de l'exécution, si il vaut mieux créer:
1. struct test
{
int a, b, c;
};
et remplir en faisant: test temp; temp.a = x; temp.b = y; temp.c = z;
2. class test
{
public:
int a, b, c;
test(int x, int y, int z) {a = x; b = y; c = z;}
};
et remplir en faisant ça: test temp(x, y, z);
Marsh Posté le 20-02-2002 à 22:35:24
si tu cherche la rapidité je pense qu'il vaut mieu faire:
struct maStruct test;
test.a=1;
tu économise un jump comme ça, par contre ton code va être un poil plus volumineux
Marsh Posté le 21-02-2002 à 00:44:55
Alons, les 2 methodes sont aussi rapides les unes que les autres. Ca vous dit quelque chose le code inline ?
Et je crois que tu peux mettre un constructeur sur une struct, mais à ce niveau la, il n'y a plus beaucoup de difference avec une classe ou tout est publique
Marsh Posté le 21-02-2002 à 07:59:26
Kristoph a écrit a écrit : Alons, les 2 methodes sont aussi rapides les unes que les autres. Ca vous dit quelque chose le code inline ? Et je crois que tu peux mettre un constructeur sur une struct, mais à ce niveau la, il n'y a plus beaucoup de difference avec une classe ou tout est publique |
Là je comprends pas tout, constructeur, classe... en C
Je pense qu'il y a du avoir un bug qqpart (C++ plutôt je pense).
Marsh Posté le 21-02-2002 à 08:04:17
il n'y a pas de constructeur dans une structure...
Marsh Posté le 21-02-2002 à 09:10:47
pas de constructeurs en C
par contre en C++ une struct peut avoir un constructeur
quand a la vitesse d'execution, je ne pense pas que la difference soit sensible, et en C je pense meme que le code genere doit etre identique...
Marsh Posté le 21-02-2002 à 10:08:47
ba tu fais une macro :
#define constructeur_struct_A(x, y, z) {A.a=x; A.b=y; A.c=z}
mieux, tu def un tableau dynamique de struct + une fonction/macro qui ajoute une struct à ce tableau. Après faut voir pour gérer l'accès à ces structs dans le tableau.
C'est ce que je fais là : http://cycojesus.free.fr/progs/openglavity/index.htm (tu dl les sources et tu cherche la fonction initCorps())
[jfdsdjhfuetppo]--Message édité par cycojesus--[/jfdsdjhfuetppo]
Marsh Posté le 21-02-2002 à 15:31:15
une struct = classe en C++
faut pas chercher c'est comme ca.
la seule difference c'est que
par defaut tout membre non specifie
d'une classe est private
et tout membre non specifie
d'une struct est public.
(pour se rapprocher de ce que
c'etait en C)
et puis plus la peine de faire de typedef
comme en C.
A+
LEGREG
Marsh Posté le 21-02-2002 à 15:59:47
c pas jolie d'utiliser des struct en C++
Marsh Posté le 20-02-2002 à 20:00:01
Tout est dans le titre?