총 3 개의 클래스가 있습니다 ...
1. Source.cpp (주 기능 위치)
2. 내 모든 변수를 선언 한 곳에서 Variables.cpp는 거의 무의미합니다) 나는 기능이 Source.cpp의 주요 기능) 주에서두 클래스에서 같은 개체를 사용하려면 어떻게해야합니까?
에서 실행할 수 있도록
3. Functions.cpp & .H는 (내가 Functions.cpp이
#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();
}
을 가지고 있습니다 이
Variables vari;
void Functions::choiceChecker(){
if (vari.answer == 1){
scenario1();
}
else{
cout << "Failed";
}
}
시나리오 1 기능을 실행하는 대신 항상 출력이 실패합니다. 나 또한 두 가지 오류가 발생합니다.
1. 오류 1 오류 LNK2005 : Source.obj C : \ Users ... \ Desktop \ Projects \ ConsoleApplication1 \ ConsoleApplication1 \ Functions에 이미 정의 된 "class Variables vari"(변수 @@ 3VVariables @@ A). OBJ의 ConsoleApplication1
2.Error이 오류 LNK1169 : 하나 이상의 곱하기 정의 기호는 C를 발견 : \ 사용자 ... \ 바탕 화면 \ 프로젝트 \의 ConsoleApplication1 \ 디버그 \되는 ConsoleApplication1.exe의 ConsoleApplication1
나는를 사용하여 시도했다 Functions.cpp의 새 개체, 오류가 발생하지 않지만 동일한 값을 가져 오지 않습니다.
cin >> vari.answer;
전역 전역을 피할 것을 강력히 권장하지만, [**이 질문 **] (http://stackoverflow.com/questions/15841495/the-usage-of-extern-in-c)이 도움이 될 수 있습니다. 가능하면. – WhozCraig
헤더에 변수를 모두 선언하지 않는 것이 좋습니다. 가능한 한 로컬로 유지하십시오. 매개 변수를 사용하고 값과 클래스를 반환합니다. – chris
키워드 'extern'을 사용하여 다른 소스 (.cpp) 파일에서 이미 선언 된 변수를 참조 할 수 있습니다. 일반적으로 이러한 파일을 번역 단위 *라고 부릅니다. – didierc