Я пытаюсь создать массив X-указателей, ссылающихся на матрицы измерений Y на 16. Есть ли способ сделать это в C ++ без использования тройных указателей?
Редактировать: Добавление некоторыхконтекст для проблемы.
На экране имеется несколько геометрий, каждая с преобразованием, которое было сведено к массиву 1x16.Каждый снимок представляет преобразования для каждого из числа компонентов.Таким образом, размеры матрицы равны 16 по num_components по num_snapshots, где последние два измерения известны во время выполнения.В конце концов, у нас есть много геометрий с примененным движением.
Я создаю функцию, которая принимает аргумент тройного указателя, хотя я не могу использовать тройные указатели в моей ситуации.Какими еще способами я могу передать эти данные (возможно, с помощью нескольких аргументов)?В худшем случае я думал о сведении всей этой трехмерной матрицы в массив, хотя это кажется неаккуратным.Любые лучшие предложения?
Что у меня сейчас есть:
function(..., double ***snapshot_transforms, ...)
Чего я хочу достичь:
function (..., <1+ non-triple pointer parameters>, ...)
Ниже приведена не та функция, которую я создаю,принимает тройной указатель, но показывает, что это за данные.
static double ***snapshot_transforms_function (int num_snapshots, int num_geometries)
{
double component_transform[16];
double ***snapshot_transforms = new double**[num_snapshots];
for (int i = 0; i < num_snapshots; i++)
{
snapshot_transforms[i] = new double*[num_geometries];
for (int j = 0; j < num_geometries; j++)
{
snapshot_transforms[i][j] = new double[16];
// 4x4 transform put into a 1x16 array with dummy values for each component for each snapshot
for (int k = 0; k < 16; k++)
snapshot_transforms[i][j][k] = k;
}
}
return snapshot_transforms;
}
Edit2: Я не могу ни создавать новые классы, ни использовать такие функции C ++, как std, как открытыеПрототип функции в заголовочном файле помещается в оболочку (которая не знает, как интерпретировать тройные указатели) для перевода на другие языки.
Edit3: После каждого вводав комментариях я думаю, что использование плоского массива, вероятно, является лучшим решением.Я надеялся, что будет какой-то способ разделить этот тройной указатель и аккуратно организовать эти сложные данные по нескольким частям данных, используя простые типы данных, включая одиночные указатели.Хотя я не думаю, что есть хороший способ сделать это, учитывая мои предостережения здесь.Я ценю помощь каждого =)