 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Markus Breuer Guest
|
Posted: Mon Jun 28, 2004 6:44 am Post subject: Wann const? |
|
|
Ich habe eine Template-Klasse, in der die Operatoren
T * operator->() { ... }
const T * operator->() const { ... }
überladen sind. Nun rufe ich
template_class->do_something();
auf, wobei die Definition dieser Funktion wie folgt aussieht:
void Foo::do_something( param& ) const;
Beim Aufruf erwarte ich nun, dass der const-Operator aufgerufen wird,
tatsächlich wird aber der non-const Operator aufgerufen. Kann mir jemand
erklären, wo mein Denkfehler ist?
Danke, Markus
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Martin Kaul Guest
|
Posted: Mon Jun 28, 2004 8:15 am Post subject: Re: Wann const? |
|
|
Markus Breuer wrote:
| Quote: | Ich habe eine Template-Klasse, in der die Operatoren
T * operator->() { ... }
const T * operator->() const { ... }
überladen sind. Nun rufe ich
template_class->do_something();
auf, wobei die Definition dieser Funktion wie folgt aussieht:
void Foo::do_something( param& ) const;
Beim Aufruf erwarte ich nun, dass der const-Operator aufgerufen wird,
tatsächlich wird aber der non-const Operator aufgerufen. Kann mir jemand
erklären, wo mein Denkfehler ist?
|
Die Entscheidung, ob const oder nicht-const hängt nicht von der
Methode ab, die aufgerufen werden soll, sondern vom Objekt, welches
die Methode aufruft.
TemplateClass<MyClass> template_class(.....);
template_class->do_something(); // --> non-const Aufruf
TemplateClass<MyClass> const template_class(.....);
template_class->do_something(); // --> const Aufruf
tschaule
Martin
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Olaf Krzikalla Guest
|
Posted: Mon Jun 28, 2004 12:51 pm Post subject: Re: Wann const? |
|
|
Hi,
Markus Breuer schrieb:
| Quote: | Beim Aufruf erwarte ich nun, dass der const-Operator aufgerufen wird,
tatsächlich wird aber der non-const Operator aufgerufen. Kann mir jemand
erklären, wo mein Denkfehler ist?
Die const-Version wird nur verwendet, wenn es nötig ist und nicht - wie |
Du wahrsacheinlich annimmst - wenn es möglich ist.
MfG
Olaf Krzikalla
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Markus Breuer Guest
|
Posted: Mon Jun 28, 2004 9:22 pm Post subject: Re: Wann const? |
|
|
| Quote: | Die Entscheidung, ob const oder nicht-const hängt nicht von der
Methode ab, die aufgerufen werden soll, sondern vom Objekt, welches
die Methode aufruft.
TemplateClass<MyClass> template_class(.....);
template_class->do_something(); // --> non-const Aufruf
TemplateClass<MyClass> const template_class(.....);
template_class->do_something(); // --> const Aufruf
|
Danke, genau das hat mir hatte mir gefehlt.
Danke, Markus
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|