尚未声明char变量

char variable has not been declared

本文关键字:变量 char 未声明      更新时间:2023-10-16

我昨天试图将代码分为几个文件时遇到了一个问题。

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

这一切都很好,直到我达到了我需要声明变量的功能,尽管我已经有(但也许位于错误的位置)。

因为代码太长,我已经将所有文件放在pastebin中。

我在main.cpp中声明了"字段":

char field[20][41];

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

我想在我的字段中使用它。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字段,因为如果在这两个文件中完成了错误,我会遇到错误。因此

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

亲切的问候,本杰明

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

如果您想在field.cpp中使用字段变量,则可以在字段中定义它。

代码可能如下。

#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中返回field[i][j]的值。

您可以通过将其作为参数传递给LoadLevel函数,在您的函数中使用字段数组,如果要使用指针,也可以检查此问题。因此您的功能看起来像:

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