C ++'ClassName Not Declared'错误

时间:2010-04-21 00:54:21

标签: c++ compilation undeclared-identifier

我有这个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尚未宣布” 〜

1 个答案:

答案 0 :(得分:3)

你的反对包含。您需要包含.cpp文件中的标题(.h)文件,而不是像现在一样包含它。

.cpp文件是编译器实际要编译的文件; .h文件只是要包含在.cpp文件中。

此外,您不需要围绕.cpp文件的内容包含保护,因为您永远不会#include .cpp文件(好吧,可能会在有限的情况下完成,但是这不常见)。你只需要保护头文件的内容。