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

WinDev Discussion :

Appel du mauvais constructeur lors de l'instanciation d'une classe [WD18]


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 6
    Points
    6
    Par défaut Appel du mauvais constructeur lors de l'instanciation d'une classe
    Bonjour,
    J'ai un souci lors de l'instanciation de ma classe Appointment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PROCEDURE Constructor(pShift is a Shift, pSkillsNeeded is an array of dynamic Skill)
    PRIVATE
    	:_associatedShift	= pShift
    	:_skillsNeeded	= pSkillsNeeded
    Cependant, lorsque j'initialise un objet Appointment, j'obtiens cette erreur : "Les paramètres d'appel du code 'Constructeur de la classe Employee' sont incorrects : on attendait 3 paramètres et on en a reçu 0."
    Alors que ces deux classes n'ont aucun rapport ! Une autre fois, le constructeur d'une autre classe encore était appelé, donc je ne sais pas pourquoi est-ce que le compilateur appelle toujours d'autres constructeurs.

    Si quelqu'un a une idée, je suis preneur, car je suis pas mal bloqué là !

    Merci d'avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Est-ce qu'il n'y aurait pas un membre de type "Employee" dans la classe Appointment ?

    On aura peut-être une piste avec la pile des appels au moment de l'erreur.

    Quoi qu'il en soit, je n'ai jamais rencontré de cas où un constructeur est appelé à tord.

    Tatayo.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 6
    Points
    6
    Par défaut
    Merci Tatayo, tu m'as ouvert l'esprit !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Appointment is a Class 		
    	PRIVATE
    		_skillsNeeded		is an array of dynamic Skill
    		_employeeAssigned	is a dynamic Employee
    		_associatedShift	is a dynamic Shift
    END
    Je viens de réussir du coup à résoudre le problème en mettant un "dynamic" devant Shift et Employee, je suis vraiment débile de ne pas y avoir pensé. Il faut dire que le code d'erreur n'était pas très explicite...

    Au passage, je te remercie de toutes les réponses que tu as pu donner aux autres gens sur ce forum, j'ai souvent été débloqué par tes conseils alors que je cherchais une solution sur internet.

  4. #4
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    Dans la déclaration de ta classe Appointment tu n'aurais pas un membre de type Employee ?
    Si oui, passes le en dynamic


    Bon dev


    Les réponses se sont croisées
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 6
    Points
    6
    Par défaut
    Oui, en effet, les réponses se sont croisées, malheureusement, j'ai parlé trop vite ! Je suis revenu à mon problème initial, c'est à dire le même aha.

    Dans une méthode de la classe Shift, j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PROCEDURE ProduceAppointments()
    lAppointmentsArray 	is an array of dynamic Appointment
    
    FOR EACH lShiftRequirement OF _shiftRequirements
    	FOR i = 1 TO lShiftRequirement.numberOfEmployees
    		lAppointment is an Appointment(object, lShiftRequirement.skills) 	
    		ArrayAdd(lAppointmentsArray, lAppointment)
    	END
    END
    RESULT lAppointmentsArray
    Et j'ai le même souci, c'est à dire que le message d'erreur est "Le passage du paramètre 1 a provoqué une erreur. Les paramètres d'appel du code 'Constructeur de la classe Shift' sont incorrects : on attendait 4 paramètres et on en a reçu 0.", à la ligne où je crée mon Appointment.
    Pour info, "object" est ici un Shift, vu que c'est dans la classe Shift que cette méthode est déclarée. J'ai bien vérifié au debugger, pas de souci de ce côté là, le Shift le les Skills sont bons


    APPOINTMENT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Appointment is a Class
    	PRIVATE
    		_skillsNeeded		is an array of dynamic Skill
    		_employeeAssigned	is a dynamic Employee
    		_associatedShift	is a dynamic Shift
    END
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PROCEDURE Constructor(pShift is a Shift, pSkillsNeeded is an array of dynamic Skill)
    PRIVATE
    	:_associatedShift	= pShift
    	:_skillsNeeded		= pSkillsNeeded
    Il semblerait que mettre "dynamic" devant les champs de la classe ne soit pas suffisant...


    Je suis débile, merci à vous deux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PROCEDURE Constructor(pShift is a dynamic Shift, pSkillsNeeded is an array of dynamic Skill)

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

Discussions similaires

  1. crash lors de l'instanciation d'une classe
    Par malus56 dans le forum C++
    Réponses: 5
    Dernier message: 05/07/2011, 08h48
  2. Erreur lors de l'instanciation d'une classe
    Par Aloneghost dans le forum Langage
    Réponses: 6
    Dernier message: 21/06/2010, 21h14
  3. Null pointer lors de l'instanciation d'une class
    Par saraya dans le forum Langage
    Réponses: 4
    Dernier message: 06/05/2009, 17h53
  4. Réponses: 5
    Dernier message: 03/12/2006, 16h15
  5. Réponses: 5
    Dernier message: 04/10/2006, 15h45

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