我有这个cpp文件。
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
和这个头文件
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
我不断收到一条错误,说“DisjointSets尚未宣布”
〜
〜
答案 0 :(得分:3)
你的反对包含。您需要包含.cpp文件中的标题(.h)文件,而不是像现在一样包含它。
.cpp文件是编译器实际要编译的文件; .h文件只是要包含在.cpp文件中。
此外,您不需要围绕.cpp文件的内容包含保护,因为您永远不会#include
.cpp文件(好吧,可能会在有限的情况下完成,但是这不常见)。你只需要保护头文件的内容。