Featured post
Run specific code when overloading C++ operators -
i have class, let's call foo, contains 3 following methods (overloading left-associative < binary operator):
... operator<(a a) { return *this; } ... operator<(b b) { return *this; } ... operator<(c c) { return *this; } a, b, c classes not related in way(if that, of matter).
now in program have 2 following cases:
a = new a(); b b = new b(); c c = new c(); (first case): new foo() < < b; or
(second case): new foo() < < b < c; whenever have first case (which ends b), want execute function run() when have read(i know) b instance. idea have following code in foo class:
... operator<(b b) { run(); } now when have code of first case, run() being executed.
the problem when have code in second case(which ends in c). want execute run() function again not until know c is. if have previous piece of code run() called when doing < b not want don't know c yet. if add run() in operator<(c c) call run() twice.
in few words want accomplish when having first case call run() @ operator<(b b) , when have second case call run @ operator<(c c).
any ideas on how can solved(if can)?
class prefoo { public: prefoo() { ... } prefoo & operator<<(a a) { ...; return *this; } prefoo & operator<<(b b) { ...; return *this; } prefoo & operator<<(c c) { ...; return *this; } int aa, bb, cc; // save information }; prefoo makefoo() { return prefoo(); } class foo { public: foo(const prefoo & pre) { run(); } // implicit conversion void run() {} // run!! }; void g() { a; b b; c c; // implicit conversion @ end foo foo1 = makefoo() << << b; foo foo2 = prefoo() << << b << c; } - Get link
- X
- Other Apps
Comments
Post a Comment