Article View: comp.sys.lang.c++
Article #2Re: Help needed in C++ Function templates
From: Amir
Date: Thu, 04 Apr 1996 18:23
Date: Thu, 04 Apr 1996 18:23
75 lines
2558 bytes
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!usenetReferences:
<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)