Hej, Jeg tænkte på om der er nogen der kan give mig svar på nogen af flg. spørgsmål. Er det muligt at manipulerer vtable runtime sådan at kalder man en method_1 klasse en C så bliver metode_2 kaldt istedet for.
class C { public: void method_1( void ) { } void method_2( void ) { } };
class D1 : public X { public: void Foo() { std::cout << "D1::Foo" << std::endl; } };
class D2 : public X { public: void Foo() { std::cout << "D2::Foo" << std::endl; } };
int main() { X *obj = new D2; obj->Foo(); obj->Exchange((void (X::*)())&D1::Foo); obj->Foo(); }
Jeg tror at det er rigtigt, men så er problemet at vtable så vidt jeg kan se er read-only :-(
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.