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

Tech-Archive recommends: Fix windows errors by optimizing your registry



Jim Brown schrieb:
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.



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(); }
};



I would assume B has to handle some A derived class that did not overload x() (however that happended). You could verify that by creating a default implementation of A::x() that ASSERTS or breaks in the debugger.


Norbert
.



Relevant Pages

  • 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)
  • Re: A simple problem with an abstract class...
    ... I have a crazy problem ... out the call to the pure virtual function xin A::doIt; ... Do any partially constructed objects get handed off to B? ... void doIt() ...
    (microsoft.public.vc.language)