Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 338
  • Last Modified:

Overloading operators outside of class

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
simondopickup
Asked:
simondopickup
1 Solution
 
jkrCommented:
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
 
simondopickupAuthor Commented:
Excellent, thanks JKR
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now