char 变量尚未声明

char variable has not been declared

我昨天 运行 在尝试将我的代码拆分为多个文件时遇到了问题。

昨天早上,我的整个代码都在一个文件中,为了更容易跟踪所有内容,我想将代码拆分成更多文件。

一切顺利,直到我到达一个需要声明变量的函数,尽管我已经声明了(但可能在错误的地方)。

因为代码太长,我已经把所有的文件都放到pastebin了。

我已在 main.cpp 中声明 "field":

char field[20][41];

整个文件在这里:https://pastebin.com/Jy1XvdpL

我想在我的 field.cpp:

中使用它
void loadLevel(int levelnumber) {

// concatenate leven base with level number
std::string level = "level" + std::to_string(levelnumber) + ".txt";

// print field
// load the text file
std::ifstream file;
file.open(level);
char c;

// read line by line, character by character and store it in field
for (int i = 0; i < 20; i++) {
    for (int j = 0; j < 41; j++) {
        file.get(c);
        field[i][j] = c;
    }
}
file.close();

}

field.h 看起来像这样:

#ifndef field
#define field

#include <iostream>
#include <string>
#include <fstream>

void loadLevel(int levelnumber);
void drawField();

#endif // !field

问题是我不知道在哪里定义 char 字段,因为如果在这些文件中的任何一个中完成我都会收到错误消息。那么我需要做什么才能让 char 字段在 field.cpp 中工作并因此在我的 main 中工作?

P.S。这是我的第一个 C++ 程序,我每天都在学习新事物。我很感激关于如何更好地做某些事情的任何提示^^

亲切的问候, 本杰明

当您在主文件中声明一个变量时,您不能在另一个文件中使用它。 (或者至少很容易)

如果您希望在 field.cpp 中使用您的字段变量,那么您可以在 field.h 中定义它。

代码如下。

#ifndef 字段

#define field

#include <iostream>
#include <string>
#include <fstream>

void loadLevel(int levelnumber);
void drawField();

char field[20][41];

#endif // !field

尽管这将不允许您使用分配给 field[i][j] 的信息,但您的主文件中将不可用。

为此,我将在 field.hfield.cpp 中创建一个函数,即 returns field[i][j] 的值。

您可以通过将字段数组作为参数传递给您的 loadlevel 函数来在您的函数中使用字段数组,如果您想使用指针,也请检查 this 问题。 所以你的函数看起来像:

void loadLevel(int levelnumber,char field[][41]);