Я хочу создать функцию, которая возвращает C-стиль многомерный массив
int mArray[2][2]; int[][] mArray getArray();
Возвращение многомерного массива C++
так это не работает, и я не знаю, почему. Любая помощь будет оценена по достоинству.
Я хочу создать функцию, которая возвращает C-стиль многомерный массив
int mArray[2][2]; int[][] mArray getArray();
Возвращение многомерного массива C++
так это не работает, и я не знаю, почему. Любая помощь будет оценена по достоинству.
С [dcl.funct]:
Функции не должны иметь тип возвращаемого типа массива или функции, хотя они могут иметь тип возвращаемого указателя типа или ссылки на такие вещи. Массивов функций не должно быть, хотя могут быть массивы указателей на функции.
Вы можете, однако, возвращать std::array
вместо:
std::array<std::array<int, 2>, 2> getArray();
@Downvoter Что случилось? Это не так. – Barry
Вы не можете вернуть массив по значению, потому что они не копируют неявно (и потому, что стандарт говорит так). Вы должны использовать std::array
вместо:
std::array<std::array<int,2>,2> fun();
std::array<std::array<int,2>,2> arr = fun();
Там не много причин для использования C-массивов над std::array
в наше время, с наиболее распространенным, вероятно, быть «потому что мой учитель/проф/босс говорит так».
спасибо, я учился сам, и мне было просто любопытно. – NTS716
Даже если вы играете и получаете правильный синтаксис, вы не можете иметь встроенный массив в качестве возвращаемого типа. – chris
Это может помочь решить этот вопрос, если вы объясните свою конечную цель. Вы пытаетесь вернуть «сетку» из 'int'? Вы пытаетесь реализовать интерфейс, совместимый с C? Вам интересно узнать о пыльных углах синтаксиса C++? –
Я не могу добавить комментарий @DrewDormann. Даже если то, что вы просите, невозможно, почти всегда есть альтернативы. – user4581301