Я немного запутался в том, что не знаю, почему мой код вызывает следующую ошибку при компиляции:
1>..\SA.cpp(81) : error C2664: 'CFE' : cannot convert parameter 1 from 'int' to 'int []'
1> Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
По сути, я пытаюсь:
Шаг 1: Преобразуйте вектор в массив, используя:
int* VecToArray(vector<int> Vec)
{
int ary[Vec.size()];
for(int i = 0; i < Vec.size(); i++)
ary[i] = Vec[i];
return ary;
}
Шаг 2: Вызов функции, в которой массив является параметром и возвращает указатель из вновь сгенерированного массива:
int* CFE(int density[])
{
...do stuff to generate 'double Energy[]'....
return Energy;
}
Шаг 3: Использование этого указателя в третьей функции для вычисления суммы Energy[]:
double ObjFunction (double *E_Array)
{
double SumEnergy = 0;
int n = 10; // Is irrelivant
for (int i = 0; i < n; i++)
{
SumEnergy += E_Array[i];
}
return SumEnergy;
}
Чтобы упростить кодирование, я использовал такие функции, где VectorName — целочисленный вектор:
double TotalEnergy = ObjFunction ( CFE ( VecToArray ( VectorName ) ) );
Очевидно, я где-то ошибаюсь в типах параметров, хотя сам не понимаю, почему. Может ли кто-нибудь с более опытным зрением помочь обнаружить его / их?