fork download
  1. #include <iostream>
  2. #include <queue>
  3. #include <cmath>
  4.  
  5. class C {
  6. protected:
  7. double a, b;
  8. public:
  9. C() {}
  10. C(double a, double b) { this->a = a; this->b = b; }
  11. friend double abs(C c) { return sqrt(c.a * c.a + c.b * c.b); }
  12. friend std::ostream &operator<<(std::ostream &s, C &c) {
  13. s << '(' << c.a << ',' << c.b << ')';
  14. return s;
  15. }
  16. };
  17.  
  18. double myabs(C c) { return sqrt(c.a * c.a + c.b * c.b); }
  19.  
  20. class CCompare : C {
  21. public:
  22. bool operator()(C &r, C &s) { return myabs(r) < myabs(s); }
  23. };
  24.  
  25. int main() {
  26. C c;
  27. std::priority_queue<C, std::vector<C>, CCompare> pq;
  28. pq.push(C(3, 1));
  29. pq.push(C(4, 1));
  30. pq.push(C(5, 9));
  31. pq.push(C(2, 6));
  32. pq.push(C(5, 3));
  33. while (!pq.empty()) {
  34. c = pq.top();
  35. pq.pop();
  36. std::cout << c << std::endl;
  37. }
  38. return 0;
  39. }
  40.  
  41.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function 'double myabs(C)':
prog.cpp:7: error: 'double C::a' is protected
prog.cpp:18: error: within this context
prog.cpp:7: error: 'double C::a' is protected
prog.cpp:18: error: within this context
prog.cpp:7: error: 'double C::b' is protected
prog.cpp:18: error: within this context
prog.cpp:7: error: 'double C::b' is protected
prog.cpp:18: error: within this context
stdout
Standard output is empty