000
12.09.2006, 09:54 Uhr
Yadgar
|
High!
Ich versuche gerade, zwei Feldzugriffs-Operatorfunktionen, eine für int und eine für const int, mittels einer ohnehin schon vorhandenen konventionellen Auswahlfunktion für Feldmitglieder zu "Einzeilern" zu vereinfachen:
C++: |
//----------------------------------------------------------------------------- // Feldzugriffsoperator, für variable Objekte // int& FixedArray::operator [] (int aIndex) { if (aIndex < 0 || aIndex >= mDim) { cout << "Index " << aIndex << " ung" << (char)129 << "ltig!" << endl; exit(1); } return mWert[aIndex]; }
//----------------------------------------------------------------------------- // Feldzugriffsoperator, für konstante Objekte // const int& FixedArray::operator [] (int aIndex) const { if (aIndex < 0 || aIndex >= mDim) { cout << "Index " << aIndex << " ung" << (char)129 << "ltig!" << endl; exit(1); } return mWert[aIndex]; }
|
hier die konventionelle Methode:
C++: |
int& FixedArray::select(int aIndex) // Methode zum Zugriff auf ein einzelnes Element, // da Referenz als Rückgabetyp, ist damit auch die Zuweisung eines Elements möglich! { if (aIndex < 0 || aIndex >= mDim) { cout << "**** Index nicht im zul" << (char)132 << "ssigen Bereich!" << endl; exit (1); } return mWert[aIndex]; }
|
...aber was ich auch anstelle, ich bekomme für die zweite der beiden Feldzugriffsoperator-Funktionen immer die Fehlermeldung:
passing `const FixedArray' as `this' argument of `int& FixedArray::select(int)' discards qualifiers
An der Konstantheit der zweiten Funktion kann es nicht liegen, wenn ich dort "const" (natürlich auch im Prototypen) entferne, werde ich erst recht mit Fehlermeldungen zugetextet...
Bis bald im Khyberspace!
Yadgar -- Flagmaker - ein Programmier-Blog |