2010-07-13 3 views
0

je reçois un g ++ erreur (référence non définie à 'SomeClass :: SomeClass (int)' et 'SomeClass :: ~ SomeClass') ce qui suit:Quelle est l'erreur dans la construction de classe g ++ suivante?

/* 
* SomeClass.h 
* 
*/ 

#ifndef SOMECLASS_H_ 
#define SOMECLASS_H_ 

class SomeClass 
{ 

public: 
    SomeClass(); 
    SomeClass(int someInt); 
    ~SomeClass(); 
}; 

#endif /* SOMECLASS_H_ */ 


/* 
* SomeClass.cpp 
* 
*/ 

#include "SomeClass.h" 

SomeClass::SomeClass() 
{ 
} 

SomeClass::SomeClass(int someInt) 
{ 
} 

SomeClass::~SomeClass() 
{ 
} 

/* 
* main.cpp 
* 
*/ 

#include "SomeClass.h" 

int main() 
{ 

    SomeClass::SomeClass someObject(1); 

    return 0; 
} 
+0

Les classes n'ont pas d'espace de noms implicite? – user383352

Répondre

6
SomeClass::SomeClass someObject(1); 

d'abord tout ce qui est pas valable, car SomeClass::SomeClass nomme le constructeur, et non le type de classe. Il suffit de dire SomeClass. Ensuite, vous oubliez probablement de lier le fichier objet SomeClass.cpp. Assurez-vous de l'inclure dans la ligne de commande du compilateur lorsque vous compilez l'exécutable, ou ajoutez-le à la configuration du projet par l'IDE que vous utilisez.

1

SomeClass n'est pas dans un espace de noms.

SomeClass someObject(1); 
+0

Les classes n'ont pas d'espace de noms implicite? – user383352

+0

@drenami - en fait, tout le fait et SomeClass IS dans un espace de noms - l'espace de noms global. Ce que Mark voulait dire, c'est que SomeClass n'est pas dans un namespace nommé SomeClass, ni SomeClass dans un namespace. –

Questions connexes