| // Special g++ Options: -fhandle-signatures |
| // GROUPS passed gb sigptr multiple-inheritance |
| // Test calling overwritten virtual functions through signature pointer. |
| |
| extern "C" |
| { |
| int printf (char *, ...); |
| } |
| |
| class C |
| { |
| public: |
| char * text1; |
| C () { text1 = "PA"; } |
| virtual char * f (void) = 0; |
| }; |
| |
| class D |
| { |
| public: |
| char * text2; |
| D () { text2 = "SS"; } |
| virtual char * g (void) = 0; |
| }; |
| |
| class E : public C, public D |
| { |
| public: |
| E () : C (), D () { }; |
| char * f (void) { return text1; } |
| char * g (void) { return text2; } |
| }; |
| |
| signature S |
| { |
| char * f (void); |
| char * g (void); |
| }; |
| |
| int main (void) |
| { |
| E a; |
| S * p = &a; |
| |
| printf ("%s%s\n", p->f (), p->g ()); |
| |
| return 0; |
| } |