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 49 50 51 | class B; class C; class A{ public: virtual bool operator<(const A & object) const = 0; // I assume you only care about B and C virtual bool operator<(const B & object) const = 0; // I assume you only care about B and C virtual bool operator<(const C & object) const = 0; // I assume you only care about B and 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; } |
Y2xhc3MgQjsKY2xhc3MgQzsKCmNsYXNzIEF7CnB1YmxpYzoKICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcjwoY29uc3QgQSAmIG9iamVjdCkgY29uc3QgPSAwOyAvLyBJIGFzc3VtZSB5b3Ugb25seSBjYXJlIGFib3V0IEIgYW5kIEMKICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcjwoY29uc3QgQiAmIG9iamVjdCkgY29uc3QgPSAwOyAvLyBJIGFzc3VtZSB5b3Ugb25seSBjYXJlIGFib3V0IEIgYW5kIEMKICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcjwoY29uc3QgQyAmIG9iamVjdCkgY29uc3QgPSAwOyAvLyBJIGFzc3VtZSB5b3Ugb25seSBjYXJlIGFib3V0IEIgYW5kIEMKfTsKCmNsYXNzIEI6IHB1YmxpYyBBewpwdWJsaWM6CiAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEEgJiBvYmplY3QpIGNvbnN0CiAgICB7CiAgICAgICAgLy8gZG8gYSBzZWNvbmQgYmluZCwgbm93IHRoYXQgd2Uga25vdyB0aGlzIGlzIHR5cGUgQi4gTmVnYXRlIGNhdXNlIHdlCiAgICAgICAgLy8gYXJlIHN3aXRjaGluZyB0aGUgb3BlcmFuZHMuCiAgICAgICAgcmV0dXJuICFvYmplY3Qub3BlcmF0b3I8KCAoY29uc3QgQiYpKnRoaXMpOwogICAgfQogICAgdmlydHVhbCBib29sIG9wZXJhdG9yPChjb25zdCBCICYgb2JqZWN0KSBjb25zdAogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgdmlydHVhbCBib29sIG9wZXJhdG9yPChjb25zdCBDICYgb2JqZWN0KSBjb25zdAogICAgewogICAgICAgIHJldHVybiB0cnVlOyAvLyBCIGlzIGFsd2F5cyA8IHRoYW4gQyByaWdodD8KICAgIH0KfTsKCmNsYXNzIEM6IHB1YmxpYyBBewpwdWJsaWM6CiAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEEgJiBvYmplY3QpIGNvbnN0CiAgICB7CiAgICAgICAgLy8gZG8gYSBzZWNvbmQgYmluZCwgbm93IHRoYXQgd2Uga25vdyB0aGlzIGlzIHR5cGUgQy4gTmVnYXRlIGNhdXNlIHdlCiAgICAgICAgLy8gYXJlIHN3aXRjaGluZyB0aGUgb3BlcmFuZHMuCiAgICAgICAgcmV0dXJuICFvYmplY3Qub3BlcmF0b3I8KCAoY29uc3QgQyYpKnRoaXMpOwogICAgfQogICAgdmlydHVhbCBib29sIG9wZXJhdG9yPChjb25zdCBCICYgb2JqZWN0KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBmYWxzZTsgLy8gQyBpcyBhbHdheXMgPiB0aGVuIEIgcmlnaHQ/CiAgICB9CiAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEMgJiBvYmplY3QpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKICAgQSogYTEgPSBuZXcgQigpOwogICBBKiBhMiA9IG5ldyBDKCk7CiAgIGJvb2wgciA9ICphMSA8ICphMjsKfQ==
-
upload with new input
-
result: Success time: 0s memory: 3056 kB returned value: 0


