devxlogo

Detect an Operator Overloading a Class

Detect an Operator Overloading a Class

How can you detect if a class overloads a particular operator when you don’t have the source for the class? You can define the operator globally so that it accepts all user defined types:

class no_operator {};class Any{public:   Any(...){cout<<"this is a placeholder for all kinds of UDTs"};};Disclaimer : ellipsis does not ensure type safety.no_operator& operator+(const Any &,const Any &) {   cout << "operator not present"<

The above operator will be invoked for an add operation involving at least one UDT?if the operator + is not overloaded in the UDT. For example:

class Foo {public:   Foo(){}   Foo & operator +(const Foo& a)   {   cout<<"operator ovverloaded"<

This can be detected as follows:

if(strcmp(typeid(FooObj+i).name(),"class Foo")==0)   cout<< "OVERLOADED" << endl;   else cout <<"NOT OVERLOADED"<
See also  Professionalism Starts in Your Inbox: Keys to Presenting Your Best Self in Email
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist