7 Extra (int in_one
, int in_two
) : m_extra_one(in_one
), m_extra_two(in_two
) {}
17 A(int value
) : m_a_value (value
) {}
18 A(int value
, A
* client_A
) : m_a_value (value
), m_client_A (client_A
) {}
23 doSomething (A
&anotherA
)
25 printf ("In A %p doing something with %d.\n", this, m_a_value
);
26 int tmp_value
= anotherA
.Value();
27 printf ("Also have another A at %p: %d.\n", &anotherA
, tmp_value
); // Break here in doSomething.
38 std::auto_ptr
<A
> m_client_A
;
41 class B
: public Extra
, public virtual A
44 B (int b_value
, int a_value
) : Extra(b_value
, a_value
), A(a_value
), m_b_value(b_value
) {}
45 B (int b_value
, int a_value
, A
*client_A
) : Extra(b_value
, a_value
), A(a_value
, client_A
), m_b_value(b_value
) {}
53 static A
* my_global_A_ptr
;
56 main (int argc
, char **argv
)
58 my_global_A_ptr
= new B (100, 200);
59 B
myB (10, 20, my_global_A_ptr
);
60 B
*second_fake_A_ptr
= new B (150, 250);
61 B
otherB (300, 400, second_fake_A_ptr
);
63 myB
.doSomething(otherB
); // Break here and get real addresses of myB and otherB.
66 myB
.doSomething (reallyA
); // Break here and get real address of reallyA.