Advertisement
Guest User

Overload

a guest
Feb 27th, 2014
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.85 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <map>
  4. #include <string>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. class A
  10. {
  11. private:
  12.     string m_memberA;
  13.  
  14. public:
  15.     explicit A(string inp):m_memberA(inp){}
  16.     int GetValue()
  17.     {
  18.         return m_memberA.size();
  19.     }
  20. };
  21.  
  22. class B
  23. {
  24. private:
  25.     int m_memberB;
  26. public:
  27.     explicit B(int inp):m_memberB(inp){}
  28. };
  29.  
  30. class C
  31. {
  32. private:
  33.     double m_memberC;
  34. public:
  35.     explicit C(double inp):m_memberC(inp){}
  36. };
  37.  
  38. class functor
  39. {
  40. private:
  41.     A* m_member;
  42. public:
  43.     explicit functor(A* inp): m_member(inp){}
  44.  
  45.     bool operator()(const std::pair<A*, B*>& iter) const
  46.     {
  47.         return (m_member->GetValue() == (iter.first)->GetValue());
  48.     }
  49.  
  50.     bool operator()(const std::pair<A*, C*>& iter) const
  51.     {
  52.         return (m_member->GetValue() == (iter.first)->GetValue());
  53.     }
  54. };
  55.  
  56. int main(int argc, char *argv[])
  57. {
  58.     A* obj_ptr_A1 = new A("Hello");
  59.     A* obj_ptr_A2 = new A("MyWorld");
  60.  
  61.     B* obj_ptr_B1 = new B(22);
  62.     B* obj_ptr_B2 = new B(11);
  63.  
  64.     C* obj_ptr_C1 = new C(5.5);
  65.     C* obj_ptr_C2 = new C(9.5);
  66.    
  67.     map<A*, B*> myMap1;
  68.     myMap1.insert(make_pair(obj_ptr_A1, obj_ptr_B1));
  69.     myMap1.insert(make_pair(obj_ptr_A2, obj_ptr_B2));
  70.  
  71.     map<A*, C*> myMap2;
  72.     myMap2.insert(make_pair(obj_ptr_A1, obj_ptr_C1));
  73.     myMap2.insert(make_pair(obj_ptr_A2, obj_ptr_C2));
  74.    
  75.     if(find_if(myMap1.begin(), myMap1.end(), functor(obj_ptr_A2)) != myMap1.end())
  76.     {
  77.         cout << "Found" << endl;
  78.     }
  79.  
  80.     if(find_if(myMap2.begin(), myMap2.end(), functor(obj_ptr_A2)) != myMap2.end())
  81.     {
  82.         cout << "Found" << endl;
  83.     }
  84.  
  85.     delete obj_ptr_A1;
  86.     delete obj_ptr_A2;
  87.     delete obj_ptr_B1;
  88.     delete obj_ptr_B2;
  89.     delete obj_ptr_C1;
  90.     delete obj_ptr_C2;
  91.  
  92.     system("PAUSE");
  93.     return EXIT_SUCCESS;
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement