🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sys.lang.c++
Article #2

Re: Help needed in C++ Function templates

#2
From: Amir
Date: Thu, 04 Apr 1996 18:23
75 lines
2558 bytes
seedy@ultranet.com wrote:
> 
> When attempted to compile the following code using GNU's g++ (ver. 2.7.1)
> on HP-UX, I got the following error :
> 
> news.cc: In function `int equal(const class abc &, const class abc &)':
> news.cc:23: no match for `operator ==(class abc, class abc)'
> 
> #include <iostream.h>
> 
> class abc {
>     public :
>        abc( int x )
>           {
>           a = x;
>           b = 0;
>           }
>        int a;
>        int b;
>        inline int operator ==(abc x)
>            {
>               return ((a==x.a) && (b==x.b));
>            }
>     };
> 
> template < class Element>
> inline int equal (Element const& e1, Element const& e2)
> {
>   return e1 == e2;
> 
> }
> 
> main()
> {
> abc a1(5), a2(5);
> 
> cout << "Return value is = " << equal(a1, a2) << endl;
> }
> 
> Even though the 'operator ==' is overloaded in class abc, compiler is
> reporting match not found. By making the overloaded function 'operator =='
> as friend to 'class abc' I could resolve the problem, because in this case,
> this overloaded function becomes outsider function.
> 
> As far as I know, template instantiation for function 'equal will be done
> for 'class abc'(because the passed parameters are of type class abc),
> and so the corresponding member function 'operator ==' can be used for
> template variables e1 and e2.
> 
> Could any one explain why this error happens.  Please send
> your response via mail to 'seedy@trigent.com' or post it here.
> 
> Cheers,
> 
> Praveen.

You are calling with const parameters a method that
it's parameters are not const.
change your operator== to:

       inline int operator ==(const abc & x) const
           {
              return ((a==x.a) && (b==x.b));
           }

Amir


--
--        o o
-----ooo---O---ooo-----------------------------------------
--  Amir Deutel
--
--  Home: Amir@bayarea.net    http://www.bayarea.net/~amir/
--  Work: Amir_Deutel@powertalk.apple.com
Technical Details
Message-ID: <31641391.2FCA@bayarea.net>
Path: arc1-ca.pugleaf.net!trib.apple.com!usenet
References: <NEWTNews.828668110.2725.seedy@trigent.trigent.com>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!trib.apple.com!usenet
From: Amir <Amir@bayarea.net>
Newsgroups: comp.sys.lang.c++,comp.lang.c++
Subject: Re: Help needed in C++ Function templates
Date: Thu, 04 Apr 1996 11:23:13 -0700
Organization: Apple Computer, Inc., Cupertino, California
Message-ID: <31641391.2FCA@bayarea.net>
References: <NEWTNews.828668110.2725.seedy@trigent.trigent.com>
NNTP-Posting-Host: 17.128.203.75
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Mailer: Mozilla 2.01 (Macintosh; I; PPC)