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.h
和 field.cpp
中创建一个函数,即 returns field[i][j]
的值。
您可以通过将字段数组作为参数传递给您的 loadlevel 函数来在您的函数中使用字段数组,如果您想使用指针,也请检查 this 问题。
所以你的函数看起来像:
void loadLevel(int levelnumber,char field[][41]);
我昨天 运行 在尝试将我的代码拆分为多个文件时遇到了问题。
昨天早上,我的整个代码都在一个文件中,为了更容易跟踪所有内容,我想将代码拆分成更多文件。
一切顺利,直到我到达一个需要声明变量的函数,尽管我已经声明了(但可能在错误的地方)。
因为代码太长,我已经把所有的文件都放到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.h
和 field.cpp
中创建一个函数,即 returns field[i][j]
的值。
您可以通过将字段数组作为参数传递给您的 loadlevel 函数来在您的函数中使用字段数组,如果您想使用指针,也请检查 this 问题。
所以你的函数看起来像:
void loadLevel(int levelnumber,char field[][41]);