C ++ «ClassName Not Объявлено» Ошибка - PullRequest
1 голос
/ 21 апреля 2010

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

3 голосов
/ 21 апреля 2010

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

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

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

...