ich in ein bisschen einer Geige bin, dass ich nicht weiß, warum mein Code den folgenden Fehler bringt beim Kompilieren:Fehler in einen Zeiger aus einer Funktion zurückkehrt, die auf ein Array verweist
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
im wesentlichen ich versuche:
Schritt 1: Konvertieren von einem Vektor in ein Array mit:
int* VecToArray(vector<int> Vec)
{
int ary[Vec.size()];
for(int i = 0; i < Vec.size(); i++)
ary[i] = Vec[i];
return ary;
}
Schritt 2: Aufruf an einer Funktion, in denen das Array ein paremeter ist, und es gibt einen Zeiger von einem neu ge nerated Array:
int* CFE(int density[])
{
...do stuff to generate 'double Energy[]'....
return Energy;
}
Schritt 3: in einer dritten Funktion diesen Zeiger Mit der Summe von Energie calcualte []:
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;
}
Um einfachere Codierung mache ich die Funktionen wie so verwendet haben, wo VectorName eine ganze Zahl Vektor:
double TotalEnergy = ObjFunction (CFE (VecToArray (VectorName)));
ich offensichtlich falsch irgendwo die Parametertypen immer bin, obwohl ich einfach nicht, warum mich zu sehen. Könnte jemand mit einem erfahrenen Auge helfen, es zu entdecken?
Welche Zeile wäre Zeile 81 von Ihrem Programm? –
Was ist die Beziehung zwischen den Schritten 1, 2 und 3. Ich sehe keine? –
Das wäre die TotalEnergy-Linie. Es gelang mir, das Problem zu beheben, erwies sich jedoch als ein fehlendes * in der VecToArray-Funktion im Klassenheader. Obwohl der Zeiger auf eine lokale Variable ist ein sehr guter Punkt, was mich mit einem viel größeren Problem. Wird dafür aber eine neue Frage eröffnen. – Raugnar