Was ist falsch an diesem Code? Ich möchte ungerade Zahlen sortieren, sondern auch bleiben ihre Plätze int, gemacht für diese Funktion aber compilator wird nicht passieren dieseC++ Vektorsortierung ungerade und gerade bleiben
Es gibt Fehler:
error: reference to non-static member function must be called
und es gibt einen Code:
public:
std::vector<int> sortArray(std::vector<int> array)
{
std::vector<int> sortedArray(array);
std::sort (sortedArray.begin() , sortedArray.end() , oddSort);
}
bool oddSort (const int& left , const int& right){
if (left % 2 && right % 2)
return left < right;
else if (left % 2)
return false;
else if (right % 2)
return true;
return left < right;
}
'Bool oddSort (const int & links, const int & rechts)' muss eine statische Memberfunktion oder Namespace-Bereich oder globale Funktion seines – Danh
Aus Neugier, warum Sie tun Möchten Sie es als Member-Funktion deklarieren, während es keine Mitgliedsdaten verwendet? – Danh
Ich bezweifle ernsthaft, dass dies tun wird, was Sie wollen, auch nachdem Sie es "statisch" gemacht haben. Zum einen gibst du niemals etwas von deiner 'sortArray'-Funktion zurück. Zum anderen glaube ich nicht, dass Ihre Annahme in Ihrem Vergleicher die Bewegung von Elementen verhindert, wie Sie es sich vorstellen. Wenn ich Ihren Komparator richtig lese, werden alle geraden Elemente am Anfang des Arrays gestapelt, die Chancen am Ende. – WhozCraig