Click here to Skip to main content
Click here to Skip to main content
Alternative Tip

Tagged as

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

, 7 Feb 2012
Rate this:
Please Sign up or sign in to vote.
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:
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)

Share

About the Author

Stefan_Lang
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

 
GeneralUnfortunately my code didn't allow for the base class to hav... PinmemberSebastian Krysmanski7-Feb-12 21:15 

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

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

| Advertise | Privacy | Mobile
Web04 | 2.8.140814.1 | Last Updated 7 Feb 2012
Article Copyright 2012 by Stefan_Lang
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid