如何在两个类中使用相同的对象?

时间:2014-11-10 03:50:34

标签: c++

我总共有三节课...... 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;

1 个答案:

答案 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已包含此内容)

现在,您应该可以在variFunctions.cpp中使用Source.cpp