fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. class CompareMe
  6. {
  7. public:
  8. CompareMe(int in) : toCompare(in){}
  9. int toCompare;
  10. };
  11.  
  12. class Comparitor
  13. {
  14. public:
  15. bool operator()(CompareMe * first, CompareMe * second)
  16. {
  17. return first->toCompare < second->toCompare;
  18. }
  19. };
  20.  
  21. class ComparitorOuter : public Comparitor{};
  22.  
  23. int main()
  24. {
  25. class ComparitorInner : public Comparitor{};
  26.  
  27. std::vector<CompareMe *> compares;
  28. compares.push_back(new CompareMe(0));
  29. compares.push_back(new CompareMe(1234));
  30. compares.push_back(new CompareMe(163));
  31. compares.push_back(new CompareMe(6));
  32. compares.push_back(new CompareMe(12));
  33.  
  34. //This works, and properly sorts the array
  35. ComparitorOuter comparitor;
  36. std::sort(compares.begin(), compares.end(), comparitor);
  37.  
  38. //Uncomment out the sort below and it will not compile.
  39. ComparitorInner comparitorInner;
  40. std::sort(compares.begin(), compares.end(), comparitorInner);
  41.  
  42. std::vector<CompareMe *>::iterator it;
  43. for(it = compares.begin(); it != compares.end(); ++it)
  44. {
  45. std::cout << (*it)->toCompare << std::endl;
  46. }
  47. }
Success #stdin #stdout 0s 3032KB
stdin
Standard input is empty
stdout
0
6
12
163
1234