Получить массив через функцию-параметр
У меня есть массив объявлен как
Object array[N];
и функция как
void GetArray(void** array, size_t count)
{
*array = array;
*count = N;
}
Я пытаюсь вызвать функцию с этим кодом:
size_t number;
GetArray(XXX, &number);
где XXX что я должен передать, чтобы получить массив? Спасибо
РЕДАКТИРОВАТЬ 1
Object *array
GetArray((void**)array, number)
РЕДАКТИРОВАТЬ 2
static Object array[N]
3 ответа
Хотя я не уверен на 100%, что правильно понимаю ваши намерения, если GetArray
должен вернуться Object array[N]
сам, как насчет возвращенияObject*
от GetArray
?
Например:
size_t const N = 1;
Object array[N];
Object* GetArray(size_t* count)
{
*count = N;
return array;
}
РЕДАКТИРОВАТЬ:
Насколько я вижу ваш отредактированный вопрос, аргумент number
за GetArray
Кажется, принимается как ссылка (не указатель). Итак, что касается массива, как насчет ссылки вместо указателя? Тогда вы можете избежать хлопот void**
вещи.
Например:
void GetArray(Object*& arr, size_t& count)
{
arr = array;
count = N;
}
int main() {
size_t number;
Object *arr;
GetArray(arr, number);
for ( size_t i = 0; i < number; ++ i ) {
Object o = arr[i]; // example
}
}
Как и с числом, вы должны передать адрес массива:
GetArray(&array, &number)
Но с C++ вам лучше использовать ссылочные параметры.
Переменная массива - это указатель на первый элемент массива (его значение является адресом первого элемента).
void GetArray(Object* dest, size_t* count)
{
dest = source; // source's value is an address; just copy it to dest
*count = N;
}
...
GetArray(array, &number); // array's value is an address so you don't need "&"