Bug g++ - C++ - Programmation
Marsh Posté le 05-11-2002 à 20:38:13
Commence deja par nous dire quelle version de g++ tu utilises.
Marsh Posté le 05-11-2002 à 20:46:07
Kristoph a écrit a écrit : Commence deja par nous dire quelle version de g++ tu utilises. |
g essayé avec la 2.9.? et la 3.2 (derniere) : meme resultat
Marsh Posté le 05-11-2002 à 20:54:47
au paasage, le compilateur de microsoft (vs6) deconne egalement : lorsqu'il instancie le template pour le type myStruct*, il replace le const myStruct* (2eme argument du pt de fonction) en myStruct* const, ce qui ne veut pas vraiment dire la meme chose
Marsh Posté le 05-11-2002 à 21:22:41
Mon C++ est un peu rouillé sur cette partie, mais :
Code :
|
, c'est bien le fait que p soit une constante, pointant sur un objet de type mystruct qui lui ne l'est pas ?
Marsh Posté le 05-11-2002 à 21:34:32
c'est ca, contrairement à myStruct* const qui est un pointeur non constant vers une zone memoire qui est constante
Marsh Posté le 05-11-2002 à 21:42:46
Bah dans ce cas, ce que tu demandes n'a aucun interet à faire
Marsh Posté le 05-11-2002 à 21:51:08
nan le pb c pas ca (compile le truc tu vas comprendre tout de suite)
ce que je veux faire c'est encapsuler une librairie purement C dans des jolies classes c++
myStruct et fct sont dans cette librairie, je ne peux pas y toucher (je les ai renommé et j'ai viré leur code pour que le pb soit compréhensible plus facilement)
le template fait partie de mon encapsulation, je peux donc y toucher
cependant il doit comporter un pointeur vers une fonction de la lib à encapsuler dont le proto est void (*)(T,const T)
cependant à la compilation, g++ transforme la declaration de ce pointeur en void (*)(T,T), ce qui fait que je ne peux pas le faire pointer vers la fonction fct dont le proto est void (*)(T,const T), d'où mon probleme re-
Marsh Posté le 05-11-2002 à 22:07:36
Comme ca ca marche :
Code :
|
Marsh Posté le 05-11-2002 à 22:20:56
merci bcp, tu es un dieu
Marsh Posté le 06-11-2002 à 04:25:44
Le cast m'a l'air non seulement inutile, mais en plus dangereux, car il forcera le compilateur à se taire s'il remarque une erreur.
Code :
|
Je pense que le 'extern "C"' est nécessaire, car un appel de fonction C ne suit pas les mêmes règles qu'en C++.
Le typedef devrait même être dans la classe:
Code :
|
Mais ça ne fait pas bon ménage avec le extern...
A noter qu'on peut faire des références de fonctions.
Kristoph a écrit a écrit : Mon C++ est un peu rouillé sur cette partie, mais :
, c'est bien le fait que p soit une constante, pointant sur un objet de type mystruct qui lui ne l'est pas ? |
C'est l'inverse: pointeur variable, sur un mystruct considérée non modifiable.
Marsh Posté le 05-11-2002 à 19:33:28
C'est moi qui sait plus programmer, ou alors y'a vraiment un bug dans g++ ?
help please ....
---------------
Avoir un arbre dans son jardin n'empêche en rien de se promener en forêt.