我遇到此错误的问题:“变量或字段声明为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));
}
在最后一档我有错误......我怎么解决? 我认为这是一个糟糕的文件包含,但我无法解决它... 请帮帮我...我是新手。
答案 0 :(得分:1)
Dictionary
在main.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}}
你分手了太多这些包括的东西,这不是必需的。