【发布时间】:2016-01-23 07:18:19
【问题描述】:
目前我有调用 GenerateMap 函数的 main 函数,GenerateMap 函数完成了它应该做的事情,但我想将它传递回 int main 中的 Map[][]。即使代码正常运行,也会出现运行时错误。
terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct null not valid
有人可以帮我解决这个问题吗?我对编程是半新的,所以有人可以向我解释我需要做什么。谢谢!
代码
#include <iostream>
#include <stdlib.h>
#include <cstdlib>
#include <ctime>
using namespace std;
string GenerateMap() {
int MapDimension = 5;
string Map[MapDimension][MapDimension];
for (int i = 0; i <= MapDimension-1; ++i) {
for (int j = 0; j <= MapDimension-1; ++j) {
int random = rand() % 6;
string x;
switch (random) {
case 0:
x = "D";
break;
case 1:
x = "F";
break;
case 2:
x = "P";
break;
case 3:
x = "M";
break;
case 4:
x = "L";
break;
case 5:
x = "S";
break;
}
Map[i][j] = x;
cout <<"[" << Map[i][j] << "]" << " ";
}
cout << endl;
}
return 0;
}
void MoveForward(){
}
void MoveBackward() {
}
void MoveLeft(){
}
void MoveRight(){
}
void Player() {
string Player;
}
int main() {
GenerateMap();
}
【问题讨论】:
-
当
MapDimension不是常量表达式时,string Map[MapDimension][MapDimension]不是标准 C++。 -
您的地图是否总是大小为 5?
-
@crashmstr I -1 在循环中,所以它可以解决。
-
@Nightdaw 是的,在第二次查看时看到并从我的评论中删除了它,但乍一看它看起来是错误的,并且不像
<那样“自然”。 -
@ChrisDrew 并非总是如此,无论 MapDimension 设置如何。
标签: c++ arrays function reference pass-by-reference