C++ "ClassName Not Объявлено" Ошибка

У меня есть этот файл 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 ответ

У вас есть ваше включение в обратном направлении. Вам нужно включить файл заголовка (.h) из файла.cpp, а не наоборот, как сейчас.

Файл.cpp - это файл, который компилятор фактически собирается скомпилировать; Файл.h просто предназначен для включения в файлы.cpp.

Кроме того, вам не нужно включать ограждения вокруг содержимого файла.cpp, так как вы никогда не #include файл.cpp (хорошо, могут быть ограниченные обстоятельства, при которых это может быть сделано, но это не распространено). Вам нужны только охранники вокруг содержимого заголовочных файлов.

Другие вопросы по тегам