bonjour tout le monde
le problème que je me pose pour le moment n'est pas une chose que l'on rencontre tout le temps. Je m'explique : j'utilise la librairie SDL(donc en C) pour faire des images, mais le langage que j'utilise est le C++. J'avais lu quelque part que dans ce sens là (C=>C++) il n'y avait aucun problème de compatibilité, contrairement au sens inverse (C++ => C). Effectivement, mes programmes compilaient bien dans les deux langages.
Cependant, je suis tombé récemment sur un problème étrange. Alors, tout d'abord, comme la librairie SDL utilise un type de variable nommée Uint32 pour les couleurs, j'avais fait
typedef Uint32 Couleur
pour clarifier mes codes, et affirmer le "c'est quoi" du type. Car en fait, je m'en fiche de savoir si il est stocké comme un unsigned int sur 32 bit ou sur que sais-je, l'important c'est que ce soit une couleur


tout allait bien jusque là. Le problème est qu'à un moment donné, j'ai voulu mettre du texte sur mon image. J'ai alors utilise la librairie SDL_ttf, qui fonctionne très bien. Mais cette nouvelle librairie utilise des couleurs de type structure contenant trois champs d'entiers. Bref, j'étais bien embété, car je me trouvais obligé de faire des conversion à tout va, et que je devais posseder pour là même couleur plusieurs variables pour contenir les formats.

J'ai alors pensé : je vis surcharger les fonctions de la SDL_ttf, pour faire que si on leur passe une Couleur en paramètre plutôt que la structure qu'elles attendent, la conversion se fait à l'intérieur, avec l'appel à la bonne fonction ensuite. Comme l'écriture à l'écran n'es pas une chose si courante, ce niveau d'abstraction n'alourdirait pas trop l'ensemble.
Cependant, j'ai découvert que je ne pouvais pas surcharger la fonction : quand j'essai de le faire, mon compilo (microsoft visual c++ 2008) me dit que la fonction existe déjà, et ce quelque soit la façon dont je surcharge la fonction. La question que je me pose est alors la suivante : d'où viens ce bug? Est-ce un problème parce que j'essai de surcharger une fonction qui est déjà compilée? Est-ce que ça viens du fait que la compilation de la dll a été faite sous le mode C et non C++?

je ne trouve pas pourquoi j'ai ce bug. si vous pouviez m'aider, ça serait gentil ^^