Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Problem bei Zusammenfassung zweier Feldzugriffsoperatoren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.09.2006, 11:18 Uhr
(un)wissender
Niveauwart



C++:
private:
int& FixedArray::select(int aIndex) const;



Und nimm exit raus, das hat in keinem C++-Programm was zu suchen.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.09.2006, 11:27 Uhr
Yadgar



High!


Zitat von (un)wissender:

C++:
private:
int& FixedArray::select(int aIndex) const;





Das hilft mir nicht weiter, select muss public sein, da mit ihm auch von außen sowohl Zugriffe auf Feldelemente wie Wertzuweisungen (Rückgabe als Referenz!) von Feldelementen möglich sein sollen!


Zitat von (un)wissender:

Und nimm exit raus, das hat in keinem C++-Programm was zu suchen.



Soll auch nur ein Provisorium sein...

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog

Dieser Post wurde am 12.09.2006 um 11:28 Uhr von Yadgar editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.09.2006, 11:31 Uhr
(un)wissender
Niveauwart


Nein muss private sein da hier das const-Konzept ein wenig ausgehebelt wird.


Zitat von Yadgar:

[...] da mit ihm auch von außen sowohl Zugriffe auf Feldelemente wie Wertzuweisungen (Rückgabe als Referenz!) von Feldelementen möglich sein sollen!



Genau dafür hast du die Operatoren, die dann auch public sind.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.09.2006, 11:36 Uhr
Yadgar



High!


Zitat von (un)wissender:
Nein muss private sein da hier das const-Konzept ein wenig ausgehebelt wird.

[...]

Genau dafür hast du die Operatoren, die dann auch public sind.


Schön und gut, aber auch eine Deklaration von select als private ändert nichts an der Fehlermeldung!

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.09.2006, 12:03 Uhr
Blubber2063



Das nimmt dir der Compiler auch nicht ab, woran sollte er unterscheiden können ob du jetzt den Const oder den nicht Const deklarierten Operator nutzen wolltest. Das kann er nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.09.2006, 14:13 Uhr
(un)wissender
Niveauwart


Poste mal mehr Code, damit wir den zusammen bauen könnnen.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: