错误C2065 - 头文件中使用的全局变量

时间:2015-01-02 01:08:42

标签: c++

我的cpp文件中有一个全局字符串变量,我在头文件中使用它,它给了我C2065错误,当我上次有这个项目并创建它工作的头文件时,我做了没有更改任何文件,它给我全局变量的错误。当它尝试在cpp文件中声明的头文件中使用全局函数时,它也给了我C3861错误,当它也在之前工作时。在保存并关闭我的项目之前一切正常,但现在它根本不起作用。

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函数。头文件中的chooseClass函数可以正常工作。

错误:

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

1 个答案:

答案 0 :(得分: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文件中,您将使用set select类函数,如chooseClass("warrior");

然后作为旁注:您可能希望使用您的游戏类的枚举。