elkassas@eb.ele.tue.nl (sherif el kassas) (06/21/91)
Hi all,
I'm using g++ version 1.37.1 (based on GCC 1.37)
on apollo systems running SR10.{2,3}
Now, I've got this MI example. The class structure
looks like this:
B1 B2
\ /
D
All classes define two virtual methods called x and y.
My problem is that if i call method x of a D object
METHOD y IS EXECUTED.
(when using a pointer to the object, see void f(D* v))
To make it more interesting, if i swap the lines
labeled // 1 and // 2, the bug goes away.
Am i doing something wrong, or is this a g++ MI bug ?
Thanks,
Sherif
----------------test.cc----------------------
#include <stream.h>
class B1 {
public:
virtual void x(){ cout << "B1::x()\n"; } // 1
virtual void y(){ cout << "B1::y()\n"; } // 2
};
class B2 {
public:
virtual void y(){ cout << "B2::y()\n"; }
virtual void x(){ cout << "B2::x()\n"; }
};
class D : public B1, public B2 {
public:
virtual void y(){ cout << "D::y()\n"; }
virtual void x(){ cout << "D::x()\n"; }
};
void f(D* v) { cout << "f: v->x() "; v->x(); }
main()
{
D d;
cout << "d.x() ";
d.x();
f(&d);
}
--------sample output-----------------------------
d.x() D::x()
f: v->x() D::y()
Sherif El-Kassas, elkassas@eb.ele.tue.nl . :.
Digital Systems Group, EH 11.29 \_____o__/ __________
Eindhoven University of Technology, .. /
5600 MB Eindhoven, The Netherlands. /