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 :

Compilation impossible "default argument missing for parameter 2"


Sujet :

C++

  1. #1
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut Compilation impossible "default argument missing for parameter 2"
    Bonjour, j'ai l'impression que le probleme que je rencontre fait parti de ces soucis fantomes rares et difficiles à cerner...

    J'ai un message d'erreur à la compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    default argument missing for parameter 2
    Ceci apparait après une modification substantielle de mon code :

    J'ai du reprendre une page contenant les méthodes de 2 classes, A et B, B étant instanciée dans A.
    + des variables globales en haut de page, partagées entre les 2 classes.
    (vive l'objDev!! )

    Donc je veux repasser tout ca au propre :
    J'ai passé les globales en attribut de A,
    et les globales utilisées par B uniquement en attribut de B.

    Je change mes constructeur de B pour que les valeurs de A instanciant B lui soit passé en argument,

    Tout semble ok, pourtant j'ai ce crash unique :
    in B.cpp : error : default argument missing for parameter 2 B::B(x,y,z)

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Août 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 190
    Points : 219
    Points
    219
    Par défaut
    Salut,

    Sans code c'est difficile de t'aider.

  3. #3
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    Je peux te donner le constructeur, mais pour le reste c'est assez long...

    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
    B::B(QWidget *parent, char *SP,  char *SN, char *SN2, vector <float> ids, vector <float> ids2, vector <float> INFO, bool LEIPcut, int NBRANGE, int dynScale) : QWidget(parent){
     
    		this->idsprofile.setupUi(this);
     
    		SourcePath = SP;
    		SourceName = SN; 
    		SourceName2 = SN2; 
     
    		this->ids=ids;
    		this->ids2=ids2;
    		this->INFO=INFO;
    		thisLEIPcut=LEIPcut;	
     
     
     
    		this->dynScale=dynScale;
    		this->NBRANGE=NBRANGE;
    };
    avec pour attributs de B :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	private:
    	char *SourcePath;
    	char *SourceName;
    	char *SourceName2;
    		int dynScale;
    		int NBRANGE;
    								vector <float> ids;
    	vector <float>  ids2;
     
    	vector <float> INFO;
     
    	bool thisLEIPcut;

  4. #4
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Points : 158
    Points
    158
    Par défaut
    in B.cpp : error : default argument missing for parameter 2 B::B(x,y,z)
    apparemment il ne connait pas le constructeur avec 3 paramètres: vérifie s'il existe, et si oui vérifie le type des paramètres lors de l'appel.

  5. #5
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    Ok, j'ai compris le bug,
    En fait j'utilise en début du main (ou A) un constructeur vide comme je n'ai pas déclaré un prototype avec argument vide,
    Forcément il va chercher des default.

  6. #6
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    non en fait je n'ai pas déclaré de dans l'implémentation constructeur de A (note)

    je déclare dans les A.méthodes() des pb=new B(x,y,z) respectant le prototype de B

    mais l'absence de (note) est peut etre la source de l'erreur ? qu'ne penses tu ?

  7. #7
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    A premiere vue, je dirais que ton y n'est pas un char*, alors qu'il devrait en être un (ou un objet qui possède un constructeur qui prend un char* en paramètre)
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  8. #8
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    bravo r0d, c'est bien sur les char que ca peche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     B(QWidget *parent=0, char *SP /*venant de A*/, vector <float> INFO=NULL, bool LEIPcut=true, int NBRANGE=0, int dynScale=96);
    seulement je pense avoir bien fais attention à utiliser dans A un constructeur de b tel que : pB = new B(x, char*, ...)

    En sachant que ces char* sont censé être des pointeurs sur tableau de char...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char * SP;
    SP = new char[10];

  9. #9
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    résolu?
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  10. #10
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    pas pour autant, .... je vérifie,
    les variables que je passe en x,y,z étaient des globales auparavant, je me demande si je ne devrais pas jouer des références...

  11. #11
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    résolu, merci bcp.

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

Discussions similaires

  1. Compilation impossible, missing type specifier
    Par hannibal.76 dans le forum Débuter
    Réponses: 4
    Dernier message: 13/03/2012, 10h39
  2. Réponses: 4
    Dernier message: 11/08/2011, 16h25
  3. Invalid web service call, missing value for parameter
    Par lutecefalco dans le forum ASP.NET
    Réponses: 4
    Dernier message: 10/03/2010, 15h01
  4. [Débutant]Classe d'Authentification : compilation impossible
    Par acyclique dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 23/08/2003, 19h42
  5. Compilation impossible
    Par Michaël dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 20/08/2003, 14h16

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