Click here to Skip to main content
15,867,308 members
Articles / Programming Languages / C++
Alternative
Tip/Trick

Quickly check whether C++ template instances have the same parameters

Rate me:
Please Sign up or sign in to vote.
4.56/5 (2 votes)
7 Feb 2012CPOL 8.2K   2
If you're using templates already, and are willing to adapt your class definitions, then this should work:template class BaseClass {public: virtual bool equals(T* other) = 0;};template class ChildClass : public BaseClass > {public: typedef...
If you're using templates already, and are willing to adapt your class definitions, then this should work:
C++
template <class T>
class BaseClass {
public:
   virtual bool equals(T* other) = 0;
};

template <class T>
class ChildClass : public BaseClass<ChildClass<T> > {
public:
   typedef ChildClass<T> thistype;
   virtual bool equals(thistype* other) {
      bool result(false);
      // no cast needed!
      // now do your work here ...
      return result;
   }
};

Note how the definition of the child class passes its own type down to the base class as a parameter, and thereby defines the argument type of the function equals().

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior)
Switzerland Switzerland
Graduated at TU Darmstadt in Math & CS, with a heavy focus on CAD/CAM

Programming and designing applications in C++ in the areas AI, real-time programming, client-server applications and CAD/CAM since 1985.

Personal interests: AI, computer graphics, games, reading

Comments and Discussions

 
GeneralMy vote of 1 Pin
Yoldas Askan15-Sep-14 7:01
Yoldas Askan15-Sep-14 7:01 
GeneralUnfortunately my code didn't allow for the base class to hav... Pin
Sebastian Krysmanski7-Feb-12 21:15
Sebastian Krysmanski7-Feb-12 21:15 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.