Как преобразовать double * в массив<double>(6)
Вопрос
У меня есть функция, которая возвращает массив из 6 удвоений.
double* Validation();
Я хотел бы привести это возвращаемое значение в управляемый код.
array<double>^ validationPosition = gcnew array<double>(6);
validationPosition = Validation();
Я получаю эту ошибку:
error C2440: '=' : cannot convert from 'double *' to 'cli::array<Type> ^'
Как я должен это сделать?
Спасибо.
Решение
Если вы хотите, чтобы это было в управляемом массиве, вам нужно будет скопировать его в массив.Собственный массив double * не будет использоваться непосредственно как управляемый массив.
Вы можете использовать Marshall::Copy, чтобы скопировать это, или просто перебрать ваши 6 значений.
Вы также захотите (вероятно) удалить[] возвращаемые вами значения, поскольку это звучит так, как будто это выделяет внутренний массив для вашей процедуры validation() .
Другие советы
Вы могли бы написать функцию, которая перебирает каждую переменную в исходном double * и помещает значения в соответствующий контейнер в cli::array, затем возвращает новый массив.