Re: A simple problem with an abstract class...




"Jim Brown" <noSpam@xxxxxxxxxxx> wrote in message
news:%23sInEgzaHHA.5080@xxxxxxxxxxxxxxxxxxxxxxx
Hi,



I'm working an a large legacy app that is built with Makefiles using the
Microsoft Visual Studio 8/VC/BIN/cl.EXE compiler. I have a crazy problem
that I'm hoping someone has seen before. I've included a simplified
version of the problem that runs fine in a VC++ console test project. The
project crashes if I instantiate an object of class B without commenting
out the call to the pure virtual function x() in A::doIt(); Naturally, B
deals with objects derived from A.

Do any partially constructed objects get handed off to B? The virtual table
is initialized incrementally, so calls to virtual functions made from inside
the base constructor aren't made virtually.




Thanks for taking a look.





class A

{

public:

void doIt() { x(); }



virtual void x() = 0;



virtual ~A() {}

};



class B

{

public:

B() {}



void push(A* pA) { ... }



A* pop() { A* pA = ...; return pA; }



void tryIt() { A* pA = pop(); pA->doIt(); }

};








.



Relevant Pages

  • Re: A simple problem with an abstract class...
    ... I'm working an a large legacy app that is built with Makefiles using the Microsoft Visual Studio 8/VC/BIN/cl.EXE compiler. ... I have a crazy problem that I'm hoping someone has seen before. ... I've included a simplified version of the problem that runs fine in a VC++ console test project. ... void doIt() ...
    (microsoft.public.vc.language)
  • A simple problem with an abstract class...
    ... Microsoft Visual Studio 8/VC/BIN/cl.EXE compiler. ... I have a crazy problem ... of the problem that runs fine in a VC++ console test project. ... void doIt() ...
    (microsoft.public.vc.language)