我总共有三节课......
1. Source.cpp(主要功能在哪里。)
2. Variables.h(我在其中声明了所有变量,Variables.cpp几乎无关紧要)
3. Functions.cpp& .h(我在Source.cpp的main函数中运行函数)
主要是我有这个
#include <iostream>
#include <cstdlib>
#include "Variables.h"
#include "Functions.h"
#include <ctime>
using namespace std;
Variables vari;
Functions func;
int main(){
cout << "\n\n>>> ";
cin >> vari.answer;
func.choiceChecker();
}
在Functions.cpp中我有这个
Variables vari;
void Functions::choiceChecker(){
if (vari.answer == 1){
scenario1();
}
else{
cout << "Failed";
}
}
我总是输出失败,而不是运行scenario1函数。我也有两个错误。
1.错误1错误LNK2005:“类变量vari”(?vari @@ 3VVariables @@ A)已在Source.obj中定义C:\ Users ... \ Desktop \ Projects \ ConsoleApplication1 \ ConsoleApplication1 \ Functions.obj ConsoleApplication1
2.Error 2错误LNK1169:找到一个或多个多重定义的符号C:\ Users ... \ Desktop \ Projects \ ConsoleApplication1 \ Debug \ ConsoleApplication1.exe ConsoleApplication1
我已经尝试在Functions.cpp中使用一个新对象,我没有得到任何错误,但它没有得到相同的值
cin >> vari.answer;
答案 0 :(得分:0)
要使用一个全局变量,您必须声明一次,然后定义一次(WhozCraig链接this question及其解释)。
以下情况适用于您的情况:
extern Variables vari;
中添加Variables.h
(在Variables
类或结构的声明下方。)Variables.cpp
添加Variables vari;
Functions.h
中添加#include Variables.h
Source.cpp
中删除#include Variables.h
(因为Functions.h
已包含此内容)现在,您应该可以在vari
和Functions.cpp
中使用Source.cpp
。