IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

surcharge de fonction + SDL


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Points : 50
    Points
    50
    Par défaut surcharge de fonction + SDL
    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 ^^

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Les surcharges de fonctions sont interdites en C, ça ne marche qu'en C++. Tu obtiens l'erreur avec quel langage ?

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Citation Envoyé par bubuche87 Voir le message
    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.
    En fait, c'est faux. Contrairement aux idées reçues, le C++ n'est pas un superset du C (par exemple, ce code C parfaitement valide ne compile pas en C++). Toutefois, il existe un subset commun aux deux langages, et on peut agrandir ce subset par l'utilisation intelligente de macros.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Points : 50
    Points
    50
    Par défaut
    non, je compile bien en C++, mais j'utilise une lirairie d'image qui s'appelle SDL, et qui a été compilé en C. Ma question est : est-ce que je peut surcharger dans mon code les fonctions compilées dans la librairie?

    Enfin, je ne vois pas trop d'où viens l'erreur de toute façon.

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Je ne crois pas qu'on puisse, car les fonctions d'une bibliothèque C sont déclarées en extern "C", ce qui signifie qu'elles sont un seul nom C.

Discussions similaires

  1. API HOOK, Dump dll, Surcharge de Fonction
    Par MicroAlexx dans le forum Windows
    Réponses: 2
    Dernier message: 30/12/2005, 10h39
  2. [MFC] Surcharger des fonctions de CView
    Par Philippe320 dans le forum MFC
    Réponses: 2
    Dernier message: 22/11/2005, 21h24
  3. singleton, polymorphisme, et surcharge de fonction
    Par legend666 dans le forum C++
    Réponses: 11
    Dernier message: 14/11/2005, 09h27
  4. Problème fonction SDL
    Par seeme dans le forum SDL
    Réponses: 2
    Dernier message: 06/11/2005, 20h22
  5. Surcharge de fonction d'un edit dynamique
    Par Tartar Ukid dans le forum C++Builder
    Réponses: 4
    Dernier message: 13/10/2003, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo