KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a question on C++ double dispatch. In the code below, I want the results from the second set to match the results from the first set. I don't know the actual type (unless I try dynamic_cast) but I do know that the object inherited from the BaseClass type. What is the most efficient (performance-wise) way to accomplish this? After googling around for a while I found out about double dispatch and the loki multimethods. The problem I have with the Shape examples is that in my application, Processor and BaseClass are entirely independent and don't have a common method that they can call in each other. Secondly, there is only one Processor (i.e. nothing inherits from it). Thanks for any help. #include <iostream> #include <string> using namespace std; class BaseClass{ public: BaseClass(){} virtual void myFunction(){cout << "base myFunction called" << endl;} }; class Derived1: public BaseClass{ public: Derived1():BaseClass(){} void myFunction(){cout << "Derived1 myFunction called" << endl;} }; class Derived2: public BaseClass{ public: Derived2():BaseClass(){} void myFunction(){cout << "Derived2 myFunction called" << endl;} }; class Derived3: public BaseClass{ public: Derived3():BaseClass(){} void myFunction(){cout << "Derived3 myFunction called" << endl;} }; class Processor{ public: Processor(){} virtual void processObj(BaseClass* bc){cout << "got a base object" << endl; bc->myFunction();} virtual void processObj(Derived1* d1){cout << "got a derived1 object" << endl; d1->myFunction();} virtual void processObj(Derived2* d2){cout << "got a derived2 object" << endl; d2->myFunction(); } }; int main() { BaseClass *bcp=new BaseClass(); Derived1 *dc1p=new Derived1(); Derived2 *dc2p=new Derived2(); Derived3 *dc3p=new Deri
Tags (comma-separated)
Save Edits
Cancel