Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Frage zu operator[]

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.10.2004, 15:50 Uhr
~MoeJoe
Gast


Hallo,

ich habe eine Klasse geschrieben in der ich die Methode operator[] benutzt habe:


C++:
template <typename T> class Base
{
      T* operator[] (int iPos);
      void DoSth2();
};



Wenn ich nun versuche diese Methode aus einer abgeleiteten Klasse aufzurufen:

C++:
class Derived : Base<Base<BOOL> >
{
     void DoSth2();
};

void Derived::DoSth2()
{
     this[i]->DoSth(); // Fehler
     this[i].DoSth();   // Funktioniert, obwohl operator[] einen Pointer zurückgibt
}



Warum muss man hier "." anstatt "->" benutzen ??

MfG MoeJoe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.10.2004, 16:18 Uhr
virtual
Sexiest Bit alive
(Operator)


Autsch.
Da bist Du aber in eine böse Falle getappt:

C++:
this[i]->DoSth();


hat nichts mit Deinem Operator zu tun (du kannst ihn ja spasseshalber mal auskommentieren, dann siehst Du, daß der Code trotzdem noch compiliert....

this ist ein Pointer, das has Du ganz richtig erkannt: Auf pointer kann man aber immer den op[] anwenden: wenn Du es tust, mit "this[i]", dann sagst Du dem Compiler: "this ist ein Array von Date objekten (WEil this vom Typ Date const * const ist), und ich möchte bitte das i-te Element aus diesem Array". In der Regel wird das aber nicht existieren...

Du willst den Operator [] aufrufen. Richtig wäre eines von beiden:

C++:
(*this)[i].DoSth();
this->operator[](i).DoSth();


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.10.2004, 16:50 Uhr
~MoeJoe
Gast


Danke, jetzt sollte es dann endlich richtig funktionieren.

Mfg MoeJoe
 
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: