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

Langage Delphi Discussion :

Problème d'override...


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de NeoMan
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 171
    Par défaut Problème d'override...
    Bonjour à tous!

    Ce code ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      TCaseCalcul = class
      public
       X,Y: Integer;
       Distance: Integer;
       Locked, Calculed: boolean;
       Voisines: array of PCaseCalcul;
       Constructor Create(PosX, PosY: integer);
      end;
     
      TCaseWay = class(TCaseCalcul)
      Public
       Selected: boolean;
       Constructor Create(PosX, PosY: integer); override;
      end;
    Me génère l'erreur suivante : Cannot override a static method
    Comment régler le problème ??

    Merci d'avance !!

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2002
    Messages : 69
    Par défaut
    Si tu veux qu'une méthode puisse être overridée, il faut le prévoir :

    Constructor Create(PosX, PosY: integer); virtual;
    (dans TCaseCalcul)

    Y a aussi dynamic au lieu de virtual qui est possible.
    En général on utilise virtual qui est plus rapide. Dynamic lui économise la taille du code généré si je me souviens bien.

  3. #3
    Expert confirmé

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Par défaut
    Un constructeur d'objet est toujours une méthode statique et ne peut donc pas être surchargée. Mais dans le cas d'un constructeur ne n'est pas utile, il faut définir ton objet comme suit :
    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
    type
      TCaseCalcul = class
      public
       X,Y: Integer;
       Distance: Integer;
       Locked, Calculed: boolean;
       Voisines: array of PCaseCalcul;
       Constructor Create(PosX, PosY: integer);
      end;
     
      TCaseWay = class(TCaseCalcul)
      Public
       Selected: boolean;
       Constructor Create(PosX, PosY: integer);
      end;
    Ceci n'empèche pas l'implémentation de deux constructeurs différents :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    { TCaseCalcul }
    constructor TCaseCalcul.Create(PosX, PosY: integer);
    begin
      //...
    end;
     
      { TCaseWay }
    constructor TCaseWay.Create(PosX, PosY: integer);
    begin
      inherited;  // Appel du constructeur hérité
      //... suite du code du constructeur
    end;
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  4. #4
    Expert confirmé

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Par défaut
    NeoMan
    Hem, antp à raison il vaut mieux rendre la premier constructeur virtuel et le "surcharger" ensuite...

    Je suis toujours resté dans le début de le POO ou un constructeur devait être statique...
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  5. #5
    Membre confirmé Avatar de NeoMan
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 171
    Par défaut
    Merci pour l'info!!

    J'ai toujours cruq eu le virtual c'était pour modifier la déclaration de la méthode (modifier les arguments et le résultat de fonctions)...

    Merci encore !!

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2002
    Messages : 69
    Par défaut
    ça c'est overload (ou reintroduce si overload+override)

  7. #7
    Membre confirmé Avatar de NeoMan
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 171
    Par défaut
    Oki merci pour l'info !!

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

Discussions similaires

  1. Probléme Methode override class externe
    Par grymss dans le forum Flash
    Réponses: 1
    Dernier message: 18/02/2011, 11h23
  2. Problème Maven @Override
    Par Invité dans le forum Développement Web en Java
    Réponses: 4
    Dernier message: 07/07/2010, 16h07
  3. Problème avec @Override
    Par jiddou dans le forum JavaFX
    Réponses: 7
    Dernier message: 09/04/2010, 13h26
  4. Problème de "ArrayList" et "@Override"
    Par MARAMAR dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 31/05/2009, 09h37
  5. Problème avec @Override
    Par Riasroc dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 14/12/2008, 18h43

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