C ++错误“变量或字段声明为void”

时间:2014-02-19 14:44:52

标签: c++

我遇到此错误的问题:“变量或字段声明为void”。

的main.cpp

#include "header.h"

//Map per gestire il dizionario
std::map <std::string, Word> Dictionary;

int main()
{
    create_word();
    return 0;
}

header.h

#include <iostream> //Libreria I/O
#include <string> //Libreria per le String
#include <map> //Libreria per le Map
#include "class_word.h" //Libreria con classe Word
#include "function_dictionary.cpp" //Funzioni sul dizionario
#include "function_word.cpp" //Funzioni sulla classe Word

class_word.h

//Classe Word, rappresenta la parola del dizionario
class Word {
//Attributi privati della classe Word
private:
    std::string value; //Valore
    std::string desc; //Descrizione

//Metodi pubblici della classe Word
public:
    Word() {} //Costruttore
    Word(std::string val, std::string des) {value=val; desc=des;} //Costruttore con argomenti
    ~Word(){} //Distruttore
    std::string get_Value() {return value;} //Metodo per prendere la parola
    std::string get_Desc() {return desc;} //Metodo per prendere la descrizione
};

function_word.cpp

//Funzione per la creazione di una word
void create_word ()
{
    //Dichiarazione variabili
    std::string word, description;

    std::cout << "Parola: "; std::cin >> word;
    std::cout << "Descrizione: "; std::cin >> description;

    //Creazione Word
    Word temp(word, description);

    //Inserimento nel dizionario
    insert_dictionary(temp);
}

function_dictionary.cpp

//Funzione per inserire la parola nel dizionario
void insert_dictionary (Word temp)
{
    Dictionary.insert(make_pair(temp.get_Value(), temp));
}

在最后一档我有错误......我怎么解决? 我认为这是一个糟糕的文件包含,但我无法解决它... 请帮帮我...我是新手。

2 个答案:

答案 0 :(得分:1)

Dictionarymain.cpp中声明,但在其他任何地方都没有;然后你试图在function_dictionary.cpp中使用它。那里没有宣布。您需要使用Dictionary文件中包含的extern.cpp声明放入其中一个标头文件中。

此问题充分说明了如何在两个源文件之间共享Dictionary,并说明了如何使用extern关键字:How do I use extern to share variables between source files?

此外,#include .cpp文件通常是不好的做法。这几乎肯定会引起问题。更常见的模式是声明标题中的所有内容,然后定义 .cpp个文件中的内容。

答案 1 :(得分:0)

问题在于包含的顺序:

首先,您包含function_dictionary.cpp(通过header.h),该Dictionary使用全球符号main.cpp,该符号在{{1}}

之后严格定义

你分手了太多这些包括的东西,这不是必需的。