2015-01-02 5 views
-2

У меня есть глобальная строковая переменная в моем файле cpp, и я использую ее в файле заголовка, и она дает мне ошибку C2065, когда в последний раз у меня был этот проект и создал файл заголовка, в котором он работал, я не внес никаких изменений ни в один файл, и он дает мне ошибки для глобальной переменной. Это также дает мне ошибку C3861 при попытке использовать глобальную функцию в файле заголовка, объявленном в файле cpp, когда он работал и раньше. Все было нормально, прежде чем я сохранил и закрыл свой проект, но теперь он не работает вообще.Ошибка C2065 - Глобальная переменная, используемая в файле заголовка

CPP файл:

#include "stdafx.h" 
#include "header.h" 
#include <iostream> 
#include <stdlib.h> 
#include <string> 
#include <windows.h> 

using namespace std; 

void story();  //--Function Declaration-- 
void tutorial(); 
void startGame(); 
void chooseClass(); 
void gameMenu(); 
void exitGame(); //--End Function Declaration-- 

string name; 
string className; 

заголовка файла:

#include "stdafx.h" 
#include <iostream> 
#include <string> 

using namespace std; 

void chooseClass(){ 
    className = "Warrior"; 

    gameMenu(); 
} 

Файл заголовка использует строковые переменные Classname, и переходит к функции gameMenu. Функция selectClass в файле заголовка работает без ошибок.

Ошибки:

header.h(32): error C2065: 'className' : undeclared identifier 
header.h(35): error C3861: 'gameMenu': identifier not found 
+0

Можете ли вы добавить код из файлов .h и .cpp? По крайней мере, соответствующие части. – Omada

+0

Возможно, у вас есть глобальная переменная в одном из ваших заголовков. Это означает, что каждая единица компиляции, которая включает этот заголовок, будет иметь одну и ту же глобальную переменную. Вероятно, вам нужен один .cpp-файл с глобальной переменной и экспортировать эту переменную в другие единицы компиляции, объявив переменную с «extern» в заголовке. – hetepeperfan

+0

У меня нет глобальных переменных в файле заголовка, только файл cpp –

ответ

0

в вашем заголовке записи:

void chooseClass(const std::string& name); 

это объявляет функцию.

то в вашем файле cpp вы бы выполнили функцию.

// the global variable 
std::string className; 

//set the global variable to a value. 
chooseClass(const std::string& name) 
{ 
    className = name; 
} 

Затем в другом файле .cpp вы бы использовать набор выбрать функцию класса как chooseClass("warrior");

Тогда как заметка на полях: вы можете использовать перечислений для игровых классов.

Смежные вопросы