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

Free Pascal Discussion :

Surcharge de constructeurs [Free Pascal]


Sujet :

Free Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Par défaut Surcharge de constructeurs
    Bonjour,

    J'essaie de surcharger mon constructor "Create", mais j'ai l'erreur
    main.pas(16,23) Error: identifier idents no member "Create"
    main.pas(16,23) Fatal: Syntax error, ";" expected but "identifier CREATE" found
    Fatal: Compilation aborted
    Voilà l'interface de ma classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    type TSprite = class
    public
        constructor     Create(X, Y : integer; Path : PChar);
        constructor     Create(var Pos : TSDL_Rect; Path : PChar);
        constructor     Create(X, Y : integer; Img : PSDL_Surface);
        constructor     Create(var Pos : TSDL_Rect; Img : PSDL_Surface);
     
        procedure       Apply(Screen : PSDL_Surface);
     
        function        GetPosition : TSDL_Rect;
     
        function        GetImg : PSDL_Surface;
     
        procedure       SetPosition(var NewPos : TSDL_Rect);
        procedure       SetPosition(x, y : integer);
     
     
    private
        m_Position : TSDL_Rect;
        m_Img      : PSDL_Surface;
    end;
    Puis mon appel dans le main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure MainLoop(Screen : PSDL_Surface);
    var
        Event :     TSDL_Event;
        Sprite :    TSprite;
    begin
        Sprite := TSprite.Create(0, 0, 'rollBig.gif');
        ...
    end;
    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    sous Delphi, je pense que c'est pareil en FreePascal, pour déclarer plusieurs méthodes portant le même nom il faut utiliser le mot clé overload

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        constructor     Create(X, Y : integer; Path : PChar); overload;
        constructor     Create(var Pos : TSDL_Rect; Path : PChar); overload;
        constructor     Create(X, Y : integer; Img : PSDL_Surface); overload;
        constructor     Create(var Pos : TSDL_Rect; Img : PSDL_Surface); overload;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre éclairé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Par défaut
    Merci pour ta réponse malheureusement, j'obtiens toujours la même erreur.

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 171
    Billets dans le blog
    9
    Par défaut
    Je vais peut-être dire une bêtise mais pour qu'il y ait un constructeur il faut que la classe soit dérivée d'un objet, non ?

  5. #5
    Membre éclairé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Par défaut
    Merci de ta réponse, ne connaissant pas l'objet, j'ai essayer dans le doute de faire descendre mon TSprite du TObject. Mais rien n'y change.

    Apres plusieurs tests, ça ne vient pas que du construceur, mais aucune de mes méthodes ne sont reconnues.

  6. #6
    Membre éclairé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Par défaut
    Allez savoir pourquoi, j'ai un peu tout modifier pour tester, et au final, ça marche avec le meme code que celui que j'ai envoyé sur mon premier message, je sais pas trop pourquoi ça marche maintenant et pas hier, mais bon ...

    edit1 : j'ai trouvé pourquoi, erreur de ma part, j'avais laisser un type record avec exactement le meme nom

    merci et résolu

  7. #7
    Membre Expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 568
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Je vais peut-être dire une bêtise mais pour qu'il y ait un constructeur il faut que la classe soit dérivée d'un objet, non ?
    L'arborescence des classes est unique, toute classe descend directement ou non de TObject, qui est pris comme ancêtre à défaut d'une spécification contraire.

    (Tiré du wiki http://wiki.freepascal.org/Class)
    Classes are able to inherit and to be inherited by other classes. For runtime purposes, any class not specifying a parent class automatically inherits from TObject, as it has required components for all classes.
    @+

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Surcharger un constructeur de classe
    Par pdgnr dans le forum C++Builder
    Réponses: 5
    Dernier message: 09/11/2006, 10h17
  2. [POO] Surcharge de constructeur
    Par loganblack dans le forum Langage
    Réponses: 4
    Dernier message: 17/05/2006, 12h26
  3. Réponses: 19
    Dernier message: 19/04/2006, 10h16
  4. [POO] surcharger le constructeur
    Par wdionysos dans le forum Langage
    Réponses: 9
    Dernier message: 22/03/2006, 15h42
  5. Surcharge de constructeur???
    Par Sunsawe dans le forum Général Python
    Réponses: 3
    Dernier message: 14/03/2006, 17h26

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