0

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

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

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

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

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

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 中工作?

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

亲切的问候,本杰明

4

2 回答 2

0

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

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

于 2017-09-29T07:43:20.517 回答
0

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

如果你想在 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返回field[i][j].

于 2017-09-29T07:22:06.453 回答