Struct als Parameter - warum const?
-
Hallo zusammen,
ich habe eben versucht eine Struct als Referenz an eine Funktion zu übergeben. Das sah bei mir erst so aus:
bool sorting ( Datum &d1, Datum &d2) { //... }Nun überschüttet der Compiler mich mit komischen Meldungen. Ein Ausschnitt:
Compiler schrieb:
In file included from /usr/include/c++/4.7/algorithm:63:0,
from H3b.cpp:3:
/usr/include/c++/4.7/bits/stl_algo.h: In instantiation of ‘_RandomAccessIterator std::__unguarded_partition(_RandomAccessIterator, _RandomAccessIterator, const _Tp&, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Datum*, std::vector<Datum> >; _Tp = Datum; _Compare = bool ()(Datum&, Datum&)]’:
/usr/include/c++/4.7/bits/stl_algo.h:2321:78: required from ‘_RandomAccessIterator std::__unguarded_partition_pivot(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Datum, std::vector<Datum> >; _Compare = bool (*)(Datum&, Datum&)]Wenn ich jedoch die Referenz als const übergebe, ist mein g++ sehr zufrieden. Woran mag das liegen?
Vielen Dank
LG, freakC++
-
Du postest ja nicht mal die Fehlermeldung, nur einen kleinen Ausschnitt..
(Compilerfehler sind doch wirklich einfach. Kleines Beispiel basteln das den Fehler reproduziert, vollständige Fehlermeldung posten (zur Not auf pastebin oder so), Compiler(+Version) angeben, in 3 Minuten ist das Problem gelöst. Was ist daran so schwer?)
-
kann daran liegen, dass vorher in einer aufrufenden funktion deine structs const waren und die jetzt nicht mehr verändert werden können.