?
Solved

Overloading operators outside of class

Posted on 2009-05-19
2
Medium Priority
?
343 Views
Last Modified: 2013-12-14
Experts,
 I am trying to write implementation files for my class headers and in these implementation files, I want to overload certain operators. I am getting errors like:
 '<' : is not a member of 'C_Aircaft AND:
 '==' : modifiers not allowed on nonmember functions      

Below is a copy of the class declarator and the relevant section of the implementation file - any clues?

Thanks



======================CLASS DECLARATOR======================
friend bool operator < (const C_Aircraft& a1, const C_Aircraft& a2)const;	// Operator overload declarator
'===================IMPLEMENTATION CPP FILE========================
bool C_Aircraft::operator < (const C_Aircraft& a1, const C_Aircraft& a2)const
{
                                         if(a1.model==a2.model)
		return(a1.callsign<a2.callsign)?true:false;
		return (a1.model<a2.model)?true:false;
}

Open in new window

0
Comment
Question by:simondopickup
2 Comments
 
LVL 86

Accepted Solution

by:
jkr earned 2000 total points
ID: 24423695
A non- member operator cannot be declared as 'const' (at least that makes no sense). Also, the global operator cannot be defined at class scope. So, try
// foward declaration
 
operator < (const C_Aircraft& a1, const C_Aircraft& a2);
 
class C_Aircraft
{
 
friend bool operator < (const C_Aircraft& a1, const C_Aircraft& a2);       // Operator overload declarator
 
// rest of declaration
 
};
 
// implementation
bool operator < (const C_Aircraft& a1, const C_Aircraft& a2)
{
         if(a1.model==a2.model)
                return(a1.callsign<a2.callsign)?true:false;
 
         return (a1.model<a2.model)?true:false;
}

Open in new window

0
 

Author Closing Comment

by:simondopickup
ID: 31583077
Excellent, thanks JKR
0

Featured Post

The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Here is a helpful source code for C++ Builder programmers that allows you to manage and manipulate HTML content from C++ code, while also handling HTML events like onclick, onmouseover, ... Some objects defined and used in this source include: …
How to install Selenium IDE and loops for quick automated testing. Get Selenium IDE from http://seleniumhq.org Go to that link and select download selenium in the right hand column That will then direct you to their download page. From that p…
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

589 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question