Моя функция имеет этот прототип:
char[][100] toArray(char document[]);
G ++ на Cygwin возвращает эту ошибку:
Unable to resolve identifier toArray
Как мне вернуть массив C-строк?
Невозможно вернуть массив в C ++. Самое близкое, что вы можете сделать, это вернуть указатель на динамически размещенный блок строк.
Это юридический код
typedef char str100[100];
str100* toArray(char* document)
{
str100 *block = new str100[20];
return block;
}
Typedef делает его немного легче для понимания. Если вы не верите мне, вот тот же код без typedef
char (*toArray(char* document))[100]
{
char (*block)[100] = new char[20][100];
return block;
}
Это должно вас напугать.
Но хотя этот кодекс является законным, это также мусор. Вы должны использовать std::vector<std::string>
, Динамически распределять память сложно, гораздо сложнее, чем использовать классы, которые делают всю работу за вас.
Других решений пока нет …