This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
This is a follow up to my patch post; Brane Čibej made the (excellent) suggestion that I post an example. Using gcc 3.1 on i686-linux-pc with the patch applied, this code : #include <iostream> class Test { private: int i; public: virtual Test *GetThis() = 0; }; class Test2 : virtual public Test { public: Test2(); virtual Test2 *GetThis(); }; Test2::Test2() { std::cout << "Test2 as Test -> "; std::cout << (void*)static_cast<Test *> ( this ) << std::endl; std::cout << "Test2 as Test2 -> "; std::cout << (void*)this << std::endl; } Test2 *Test2::GetThis() { return this; } int main ( int argc, char *argv[], char *envp[] ) { Test2 OBJ; Test2 *P2; Test * P; P2 = OBJ.GetThis(); std::cout << "From Test2::GetThis() -> "; std::cout << (void *)P2 << std::endl; P = &OBJ; P = P->GetThis(); std::cout << "From Test::GetThis() -> "; std::cout << (void *)P << std::endl; return 0; } produces the following output : Test2 as Test -> 0xbffffa28 Test2 as Test2 -> 0xbffffa24 >From Test2::GetThis() -> 0xbffffa24 >From Test::GetThis() -> 0xbffffa28 Without the patch you get : check.cc:13: sorry, not implemented: adjusting pointers for covariant returns Again, I would appreciate any information and help in cleaning this code up and bringing it up to coding standards for GCC. I need this patch for what I'm working on, but I would like to have it in a form conforming to prevailing code practices in GCC in case I need to fit it into a different release. Thank you! --- David Hunt --- hunt.d@attbi.com
Attachment:
check.cc
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |