尝试使某些 gobal 变量链接器命令失败
trying to make some gobal variables linker command failed
这是我的主文件,调用处理游戏保存文件的函数
#include <iostream>
#include <fstream>
#include "Menu.cpp"
using namespace std;
extern int level;
int main() {
extern int level;
MM_class MM_obj;
MM_obj.MM_func();
cout << level;
}
我希望我的MM_class是全局的,这样我就不必调用很多函数,这是MM_class:
#include "Menu.h"
#include <iostream>
#include <fstream>
using namespace std;
int level, weapon, secondWeapon;
int itemslot1, itemslot2;
class MM_class{
public:
void MM_func() {
string saveName, saveInfo;
int rechoice = 1;
char gamename[] = "TBA";
cout << "Welcome to " << gamename << "nnDo you want to load an old save or a new save?nn1 = new save 2 = old savenn";
int saveChoice;
cin >> saveChoice;
if (saveChoice == 1) {
ofstream file;
cout << "what would you like to name the new file? (one word please)nn";
cin >> saveName;
file.open(saveName);
file << "11100";
level, weapon, secondWeapon = 1;
itemslot1, itemslot2 = 0;
file.close();
}
else {
if (saveChoice == 2) {
while (rechoice == 1) {
ifstream file;
cout << "please enter the save namenn";
cin >> saveName;
file.open(saveName);
if (file.is_open()) {
cout << "save successfully opened!n";
int getInfo = 0;
int saveInfo[5];
extern int level, weapon, secondWeapon;
extern int itemslot1, itemslot2;
while (getInfo != 4) {
file >> saveInfo[getInfo];
getInfo++;
}
level = saveInfo[0];
weapon = saveInfo[1];
secondWeapon = saveInfo[2];
itemslot1 = saveInfo[3];
itemslot2 = saveInfo[4];
rechoice = 0;
file.close();
}
else {
if (!file.is_open()) {
cout << "file could not be opened... nnattempt to open a different save file?nn";
cin >> rechoice;
file.close();
}
}
}
}
}
}
};
它会创建一个新的文本文件,或者在选择时保存文件,但如果选择这样做,它也会读取一个,所以我希望我的变量:级别、武器、第二武器、itemslot1 和 itemslot2 可以被整个程序访问,并且可以编辑,以便如果玩家升级,它可以更改
你在头文件中定义了一些全局对象(level
、weapon
等)。这打破了一个定义规则。包含此标头的任何.cpp
文件都将具有其对这些变量的自己的定义。
处理此问题的适当方法是使用 extern
声明头文件中的对象,然后在单个.cpp
文件中提供定义。也就是说,您的标头应包含:
extern int level, weapon, secondWeapon;
extern int itemslot1, itemslot2;
然后你会把它放在一个.cpp
文件中:
int level, weapon, secondWeapon;
int itemslot1, itemslot2;
相关文章:
- Netbeans 10:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- 链接器命令失败,macOS 上的退出代码为 1(使用 -v 查看调用)
- CMake 错误:链接器命令失败,退出代码为 1 和 cpp.o 文件
- clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) - 体系结构的未定义符号 x86_64:
- 如何修复 clang: 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- 如何从命令行链接C++库
- Xcode:链接器命令失败,退出代码为 1(使用 -v 查看调用)[C++]
- Android NDK.Build命令失败.未定义的引用.clang++:错误:链接器命令失败,退出代码为1
- 链接从命令行转换为Make的库
- 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用):在 Macbook 上
- C++ XCODE ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -
- Android Studio 链接器命令在包含 Boost 库时失败
- Cmake 3.8.0在makefiles中生成错误的链接命令
- 为什么我在我的C 代码中获得链接命令失败错误
- Xcode C :链接命令失败,出口代码1未找到-lboost_regex
- VS 2008:链接命令包括我没有要求且不存在的库
- CMake:运行链接命令时出错:%1不是有效的Win32应用程序
- 如何在VS 2012中查看c++链接命令
- CMake(Android工具链)-运行链接命令时出错:没有这样的文件或目录
- 如何使用CMake在链接命令行结束时添加标志?