1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | class A{ public: virtual bool operator<(const A & object) const = 0; // I assume you only care about B and C }; class C; class B: public A{ public: virtual bool operator<(const A & object) const { // do a second bind, now that we know this is type B. Negate cause we // are switching the operands. return !object.operator<( (const B&)*this); } virtual bool operator<(const B & object) const { return true; } virtual bool operator<(const C & object) const { return true; // B is always < than C right? } }; class C: public A{ public: virtual bool operator<(const A & object) const { // do a second bind, now that we know this is type C. Negate cause we // are switching the operands. return !object.operator<( (const C&)*this); } virtual bool operator<(const B & object) const { return false; // C is always > then B right? } virtual bool operator<(const C & object) const { return true; } }; int main() { A* a1 = new B(); A* a2 = new C(); bool r = *a1 < *a2; } |
Y2xhc3MgQXsKcHVibGljOgogICAgdmlydHVhbCBib29sIG9wZXJhdG9yPChjb25zdCBBICYgb2JqZWN0KSBjb25zdCA9IDA7IC8vIEkgYXNzdW1lIHlvdSBvbmx5IGNhcmUgYWJvdXQgQiBhbmQgQwp9OwoKY2xhc3MgQzsKCmNsYXNzIEI6IHB1YmxpYyBBewpwdWJsaWM6CiAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEEgJiBvYmplY3QpIGNvbnN0CiAgICB7CiAgICAgICAgLy8gZG8gYSBzZWNvbmQgYmluZCwgbm93IHRoYXQgd2Uga25vdyB0aGlzIGlzIHR5cGUgQi4gTmVnYXRlIGNhdXNlIHdlCiAgICAgICAgLy8gYXJlIHN3aXRjaGluZyB0aGUgb3BlcmFuZHMuCiAgICAgICAgcmV0dXJuICFvYmplY3Qub3BlcmF0b3I8KCAoY29uc3QgQiYpKnRoaXMpOwogICAgfQogICAgdmlydHVhbCBib29sIG9wZXJhdG9yPChjb25zdCBCICYgb2JqZWN0KSBjb25zdAogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgdmlydHVhbCBib29sIG9wZXJhdG9yPChjb25zdCBDICYgb2JqZWN0KSBjb25zdAogICAgewogICAgICAgIHJldHVybiB0cnVlOyAvLyBCIGlzIGFsd2F5cyA8IHRoYW4gQyByaWdodD8KICAgIH0KfTsKCmNsYXNzIEM6IHB1YmxpYyBBewpwdWJsaWM6CiAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEEgJiBvYmplY3QpIGNvbnN0CiAgICB7CiAgICAgICAgLy8gZG8gYSBzZWNvbmQgYmluZCwgbm93IHRoYXQgd2Uga25vdyB0aGlzIGlzIHR5cGUgQy4gTmVnYXRlIGNhdXNlIHdlCiAgICAgICAgLy8gYXJlIHN3aXRjaGluZyB0aGUgb3BlcmFuZHMuCiAgICAgICAgcmV0dXJuICFvYmplY3Qub3BlcmF0b3I8KCAoY29uc3QgQyYpKnRoaXMpOwogICAgfQogICAgdmlydHVhbCBib29sIG9wZXJhdG9yPChjb25zdCBCICYgb2JqZWN0KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBmYWxzZTsgLy8gQyBpcyBhbHdheXMgPiB0aGVuIEIgcmlnaHQ/CiAgICB9CiAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEMgJiBvYmplY3QpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKICAgQSogYTEgPSBuZXcgQigpOwogICBBKiBhMiA9IG5ldyBDKCk7CiAgIGJvb2wgciA9ICphMSA8ICphMjsKfQ==
-
upload with new input
-
result: Runtime error time: 0s memory: 11120 kB signal: 11 (SIGSEGV)


