Ну,
функция load_data (int, int) возвращает символ.
Вы передаете этот символ функции atoi, которая принимает символ *. Кроме того, вы, вероятно, не включаете заголовочный файл stdlib.h !!
#include <cstdlib>
int atoi(const char*);
Если вы не хотите включать stdlib.h, вы можете объявить atoi как extern, но помните, что при компиляции этого модуля.
extern int atoi(const char*)
Учтите, что аргумент функции atoi должен быть строкой с нулевым символом в конце.
Чтобы ваш код работал, вы должны заставить данные загрузки функции возвращать символ *, а не символ.
char* load_data(int,int);
Итак, теперь вы можете сделать
//notice these aren't const, they rely on non-compile time available data.
int maxx = atoi (load_data(....));
int maxy = atoi (load_data(....));
Если вы находитесь в C ++, функция load_data может вернуть std :: string.
std::string load_data(int,int)
, а затем используйте метод c_str (), который возвращает C-строку из строки C ++.
const char* std::string:c_str()
int maxx = atoi(load_data(....).c_str());
int maxy = atoi(load_data(....).c_str());
В дополнение к этому, вы не должны
(о
line 5>error C2540: non-constant expression as array bound
line 5>error C2440: 'initializing' : cannot convert from 'char (*)[1]' to 'char **'
)
char sector[maxx][maxy];
Вы должны
char** sector = new char[maxx][maxy]();
и не забудьте освободить эту память
delete[](sector);