2010-04-21 6 views
1

У меня есть этот файл cpp.Ошибка C++ 'ClassName Not Declared'

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

Как выглядит ваша команда компиляции? – James

+2

Кроме того, я не знаю, если это опечатка, но токен, используемый для #ifndef и #define, должен быть таким же. – Stephen

+2

Другое дело, не ставьте «использование пространства имен ...;» в файле заголовка. – Stephen

ответ

3

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

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

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

+0

Комментарий удален: я идиот. – Mac

+2

@Mac: Я не знаю, что сказал комментарий, но я уверен, что вы не идиот :-) –

 Смежные вопросы

  • Нет связанных вопросов^_^