2010-04-21 6 views
1

J'ai ce fichier cpp.C++ 'ClassName Non déclaré' Erreur

dsets.cpp:

#ifndef DSETS_CPP 
    #define DSET_CPP 

    //Adds elements to the DisjointSet data structure. This function adds 
    //x unconnected roots to the end of the array. 
    void DisjointSets::addelements(int x){ 
    } 

    //Given an int this function finds the root associated with that node. 

    int DisjointSets::find(int x){ 
    return 0; 
    } 

    //This function reorders the uptree in order to represent the union of two 
    //subtrees 
    void DisjointSets::setunion(int x, int y){ 

    } 

    #endif 

et ce fichier d'en-tête

dsets.h:

#ifndef DSETS_H 
    #define DSET_H 
    #include <iostream> 
    #include <vector> 
    using namespace std; 


    class DisjointSets 
    { 
    public: 
    void addelements(int x); 
    int find(int x); 
    void setunion(int x, int y); 

    private: 
    vector<int> x; 

    }; 

    #include "dsets.cpp" 
    #endif 

Et je continue à obtenir une erreur qui dit que « DisjointSets n'a pas été déclarée "
~
~

+0

À quoi ressemble votre commande de compilation? – James

+2

Aussi, je ne sais pas si c'est une faute de frappe, mais le jeton utilisé pour #ifndef et #define devrait être le même. – Stephen

+2

Une autre chose, ne mettez pas "using namespace ...;" dans un fichier d'en-tête. – Stephen

Répondre

3

Vous avez votre inclusion à l'envers. Vous devez inclure le fichier d'en-tête (.h) du fichier .cpp, et non l'inverse comme vous l'avez maintenant.

Le fichier .cpp est le fichier que le compilateur est en train de compiler; le fichier .h est juste destiné à être inclus dans les fichiers .cpp. De plus, vous n'avez pas besoin d'inclure des gardes autour du contenu d'un fichier .cpp, car vous n'avez jamais #include un fichier .cpp (d'accord, il pourrait y avoir des circonstances limitées dans lesquelles cela pourrait être fait, mais ce n'est pas commun). Vous avez seulement besoin de gardes autour du contenu des fichiers d'en-tête.

+0

Commentaire supprimé: Je suis un idiot. – Mac

+2

@Mac: Je ne sais pas ce que le commentaire a dit, mais je suis sûr que vous n'êtes pas un idiot :-) –

Questions connexes