J'ai cette fonction principale:erreur Fonction principale C++
#ifndef MAIN_CPP
#define MAIN_CPP
#include "dsets.h"
using namespace std;
int main(){
DisjointSets s;
s.uptree.addelements(4);
for(int i=0; i<s.uptree.size(); i++)
cout <<uptree.at(i) << endl;
return 0;
}
#endif
Et la classe suivante:
class DisjointSets
{
public:
void addelements(int x);
int find(int x);
void setunion(int x, int y);
private:
vector<int> uptree;
};
#endif
Ma mise en œuvre est la suivante:
void DisjointSets::addelements(int x){
for(int i=0; i<x; i++)
uptree.push_back(-1);
}
//Given an int this function finds the root associated with that node.
int DisjointSets::find(int x){
//need path compression
if(uptree.at(x) < 0)
return x;
else
return find(uptree.at(x));
}
//This function reorders the uptree in order to represent the union of two
//subtrees
void DisjointSets::setunion(int x, int y){
}
Lors de la compilation main.cpp (g ++ main.cpp)
Je reçois ting ces erreurs:
dsets.h: En fonction \ u2018int principale() \ u2019: dsets.h: 25: Erreur: \ u2018std :: vector> DisjointSets :: uptree \ u2019 est privé
principale cpp: 9: erreur: dans ce contexte
main.cpp: 9: erreur: \ u2018class std :: vector> \ u2019 n'a pas nommé membre \ u2018addelements \ u2019
dsets.h: 25: erreur : \ u2018std :: vector> DisjointSets :: uptree \ u2019 est privé
main.c pp: 10: erreur: dans ce contexte
main.cpp: 11: Erreur: \ u2018uptree \ u2019 n'a pas été déclaré dans ce champ
Je ne sais pas exactement ce qui est erroné. Toute aide serait appréciée.
Vous pouvez accepter certaines réponses. – WhirlWind
Il n'est pas nécessaire d'inclure des gardes (MAIN_CPP dans votre code) pour n'importe quel fichier .cpp. –