2010-04-15 6 views
1

j'ai cet en-tête de classeerreurs de constructeur

//header for class. 
#ifndef Container_H 
#define Container_H 

#include <iostream> 
using namespace std; 


const int DEFAULT=32; 

class Container{ 
    public: 
     Container(int maxCapacity = DEFAULT); 
     ~Container(); 
     void insert(int item, int index); 
     void erase(int index); 
     int size()const; 
    private: 
     int sizeC;     
     int capacityC;   
     int * elements;    
}; 
void info(); 
#endif 

et ce fichier source

#include "container.h" 


Container::Container(int maxCapacity = DEFAULT){ 
    int y; 
} 
void Container::insert(int item, int index){ 
    int x; 
} 

et quand je compile, je reçois le message d'erreur suivant

test.cpp:4: error: default argument given for parameter 1 of `Container::Container(int)' 
container.h:12: error: after previous specification in `Container::Container(int) 

ce que je mal fait ici?

Répondre

2

fonctions sans arguments doivent encore les parenthèses:

Container::Container() { 
    int y; 
} 

En fonction de votre tête, il vous ressemble juste oublié l'argument maxcapacity, et il devrait en fait être:

Container::Container(int maxCapacity) { 
    int y; 
} 

(Si vous posez des questions sur l'avertissement aussi, c'est assez évident - vous avez déclaré un int x mais vous n'avez rien fait avec)

EDIT: Eh bien maintenant vous avez modifié i t pour changer complètement l'erreur. Maintenant c'est une erreur parce que vous spécifiez l'argument par défaut aux deux endroits; vous êtes seulement censé le spécifier dans la déclaration. Laissez-le dans la mise en œuvre réelle, comme mon deuxième exemple ci-dessus

+0

yup je le sais, je me demande juste pourquoi le constructeur obtient une erreur. Et j'ai vu mon erreur et l'ai corrigé mais je reçois toujours une erreur – silent

+0

merci beaucoup :). longue journée .. – silent

0

Container::Container{ int y; } est syntaxiquement incorrecte.

EDIT:

Essayez ceci:

Container::Container(int maxCapacity) // default argument not to be mentioned in the definition 
{ 
    int y; 
} 
+0

désolé, je l'ai réparé, et il me donne toujours une erreur. "test.cpp: 4: erreur: argument par défaut donné pour le paramètre 1 de' Container :: Container (int) ' container.h: 12: erreur: après spécification précédente dans 'Container :: Container (int)'" – silent

0

Votre constructeur de conteneur (dans le fichier source) devrait ressembler à ceci:

Container::Container(int maxCapacity){ 
    // code 
} 
0
Container::Container{ 
    int y; 
} 

Je ne suis pas sûr de ce que cela est destiné à être. Si vous essayez de définir votre cteur, il devrait ressembler à:

Container::Container(int maxCapacity) // .... 

Notez que vous souhaitez inclure la valeur par défaut dans la déclaration, mais pas dans la définition.