Salve, ho questo codice che produce il seguente output:set1,set2,set2,set2.
Forse non ho ben capito il this ma non mi spiego perchè il terzo output sia set2 invece che set1.
codice:#include <iostream> class B; class A { public: virtual A* set(A* a) = 0; }; class B : public A { public: virtual A* set(B* b) { std::cout << "set1 has been called" << std::endl; b = this; return b; } virtual B* set(A* a) { std::cout << "set2 has been called" << std::endl; a = this; return this; } }; int main(int argc, char *argv[]) { B *b = new B(); A *a = b->set(b); a = b->set(a); a = a->set(b); a = a->set(a); return 0; }