delorie.com/archives/browse.cgi | search |
X-Authentication-Warning: | delorie.com: mailnull set sender to djgpp-bounces using -f |
From: | Alex Vinokur <alexvn AT bigfoot DOT com> |
Newsgroups: | comp.os.msdos.djgpp,comp.lang.c++,alt.comp.lang.learn.c-c++ |
Subject: | Re: Passing 'const' as 'this' discards qualifiers |
Date: | Wed, 05 Dec 2001 08:08:17 +0200 |
Organization: | Scopus Network Technologies |
Lines: | 99 |
Message-ID: | <3C0DB9D0.6217E7AD@bigfoot.com> |
References: | <3C0CCEE3 DOT A2D60376 AT bigfoot DOT com> <3C0CD55F DOT B04E8089 AT gascad DOT at> <3C0CD695 DOT 7F408020 AT bigfoot DOT com> <3C0CF679 DOT D0A24FB8 AT gascad DOT at> |
NNTP-Posting-Host: | 62.90.123.5 |
Mime-Version: | 1.0 |
X-Trace: | fu-berlin.de 1007532500 9541513 62.90.123.5 (16 [79865]) |
X-Mailer: | Mozilla 4.7 [en] (Win98; I) |
X-Accept-Language: | en |
To: | djgpp AT delorie DOT com |
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
Reply-To: | djgpp AT delorie DOT com |
Karl Heinz Buchegger wrote: > Alex Vinokur wrote: > > > > Karl Heinz Buchegger wrote: > > > > > Alex Vinokur wrote: > > > > > > > > > > > public: > > > > bool operator() (AAA& ins1, AAA& ins2) const {return false;} > > > ***** > > > > > > > operator() on my program doesn't contain const : > > I know, but it should. At least this is what your compilers > error message means in plain english: > > > ttt.c:20: passing `const AAA' as `this' argument of `void AAA::foo1()' > > discards qualifiers > > means > > "You try to call a non-const function for a const object" Which object in my program is const? > > > Oh sorry. Just figured out that the error message doesn't talk > about the operator altogether. Instead you somewhere try > to call a function fool(). But the cure is the same. Make > foo() a const member function. Thanks. If foo1() is const a compiler doesn't detect error. But : 1. Why does the compiler detect an error if foo2() is non const? 2. What to do if foo2 must be non const? =============================================================== Windows98 gpp : GNU C++ version 2.95.3 20010315/djgpp (release) (djgpp) compiled by GNU C version 2.95.3 20010315/djgpp (release). =============================================================== //------------- C++ Code : BEGIN ------------- #include <set> class AAA; class less_AAA { public: bool operator()(AAA& ins1, AAA& ins2) {return false;} }; class AAA { public: void foo1 () const {}; void foo2 () {}; }; int main () { set<AAA, less_AAA>::iterator iter; iter->foo1(); iter->foo2(); // Line#22 return 0; } //-------------- C++ Code : END -------------- //------------- Compiling : BEGIN ------------ ttt.c: In function `int main()': ttt.c:22: passing `const AAA' as `this' argument of `void AAA::foo2()' discards qualifiers //-------------- Compiling : END ------------- =========================== Alex Vinokur mailto:alexvn AT bigfoot DOT com mailto:alexvn AT dr DOT com http://up.to/alexvn http://go.to/alexv_math ===========================
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |