Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zuweisungsoperator

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
01.12.2003, 19:12 Uhr
~Martin
Gast


Hallo zusammen,

hab mal ne frage zu Zuweisungsoperatoren:

Laut meinem schlauen Buch können diese auch virtuell sein, überschreiben aber wegen der zwangsläufig unterschiedlichen Parameter den der Basisklasse nicht. Was soll das dann?

Ich habe auch mal was in folgender Art versucht:

class C...
class D (public abgeleitet von C) ...

beide besitzen einen virtuellen operator=

Dann 2 Pointer auf die Basisklasse:

C* p1, p2, diese bekommen aber jeweils mit new() ein Objekt der Klasse D zugewiesen.

Nun würde ich bei der Zuweisung *p1 = *p2 erwarten, dass der Zuweisungsoperator der Klasse D aufgerufen wird, wegen der Polymorphie. Es wird aber bei mir der Zuweisungsoperator der Basisklasse C aufgerufen.

Bekomme ich mein gewünschtes Verhalten überhaupt hin?
Mach ich was falsch?

Wenn es so nicht klappt, würde ich eine normale virtuelle funktion "Assign" oder so was schreiben.

Danke für jede Hilfe.

Martin
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.12.2003, 20:10 Uhr
derphilipder



Soweit ich das sehe, sollte das funktionieren...seltsam.
Haben Deine Operatormethoden dieselbe Signatur und Ergebnistyp?
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.12.2003, 20:19 Uhr
0xdeadbeef
Gott
(Operator)


Zeig doch mal den Code her.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.12.2003, 08:09 Uhr
virtual
Sexiest Bit alive
(Operator)


Wieso sollen denn die Parameterlisten zwangsläufig unterschiedlich sein, leuchtet mir nicht ein:

C++:
class A
{
     virtual A& operator (const A& ...) { ... }
};

class B: public A
{
     virtual A& operator (const A& ...) { ... }
};


Ist legal.
--
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
004
02.12.2003, 11:41 Uhr
~Martin
Gast


Hallo zusammen,

da liegt vermutlich das Problem. Ich habe nicht:

C++:
class A
{
     virtual A& operator (const A& ...) { ... }
};

class B: public A
{
     virtual A& operator (const A& ...) { ... }
};



sondern:

C++:
class A
{
     virtual A& operator (const A& ...) { ... }
};

class B: public A
{
     virtual B& operator (const B& ...) { ... }
};


weil ich dachte ein operator der Klasse B muss die Form B& operator (const B& ...) { ... } haben.

Ich werde das nun mal probieren.
Danke allen für die Hilfe.

Martin

Dieser Post wurde am 02.12.2003 um 12:35 Uhr von Uwe editiert.
 
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: