Общие правила передачи/возврата ссылки на массив (не указатель) в/из функции?C++

Программы на C++. Форум разработчиков
Anonymous
Общие правила передачи/возврата ссылки на массив (не указатель) в/из функции?

Сообщение Anonymous »

Мы можем передать ссылку на массив в функцию, например:

Код: Выделить всё

void f(int (&a)[5]);

int x[5];
f(x);     //okay
int y[6];
f(y);     //error - type of y is not `int (&)[5]`.
Или еще лучше, мы можем написать шаблон функции:

Код: Выделить всё

template
void f(int (&a)[N]); //N is size of the array!

int x[5];
f(x);     //okay - N becomes 5
int y[6];
f(y);     //okay - N becomes 6


Теперь мой вопрос: как вернуть ссылку на массив из функции?

Я хочу вернуть из функции массив следующих типов:

Код: Выделить всё

int a[N];
int a[M][N];
int (*a)[N];
int (*a)[M][N];
где M и N известны во время компиляции!

Что такое общие правила передачи и возврата ссылки на массив во время компиляции в функцию и из нее? Как мы можем передать ссылку на массив типа int (*a)[M][N] в функцию?

EDIT:

Адам прокомментировал: int (*a)[N] — это не массив, а указатель на массив.
Да. Но одно измерение известно во время компиляции! Как мы можем передать эту информацию, которая известна во время компиляции, в функцию?

Подробнее здесь: https://stackoverflow.com/questions/539 ... -from-a-fu

Вернуться в «C++»