У меня есть глобальная строковая переменная в моем файле 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
Можете ли вы добавить код из файлов .h и .cpp? По крайней мере, соответствующие части. – Omada
Возможно, у вас есть глобальная переменная в одном из ваших заголовков. Это означает, что каждая единица компиляции, которая включает этот заголовок, будет иметь одну и ту же глобальную переменную. Вероятно, вам нужен один .cpp-файл с глобальной переменной и экспортировать эту переменную в другие единицы компиляции, объявив переменную с «extern» в заголовке. – hetepeperfan
У меня нет глобальных переменных в файле заголовка, только файл cpp –