Hi,

I'm trying to play with an abstract base class and 3 derived classes in a linked list.
But when i began to design constructors and destructors for the classes i just hit a wall.

So i'll simplify the code to be more relevant, wit just 1 derived class:

Code:
class Base        // abstract base class; no obj can be created for this class
{
protected:
      int bsnr;       
      char* bstxt;     //must be allocated with new & initialized
public:
      Base() : bsnr(0)          // default constructor
      {
       bstxt = new char[size];   // allocation for a string of 'size' 
       strcpy(bstxt,  "smth");     // initialisation
       }
X    virtual ~Base()=0   // virtual destructor, from what i read i can't give any definition here
      virtual func()=0     // pure virtual function
};
class Derived: public Base
{
protected:
       int drvnr;
       char* drvtxt;     // also mem allocation whit new
pubilc:
       Derived() : drvnr(0)
       {
       bstxt = new char[size];   // allocation for a string of 'size' 
       strcpy(bstxt,  "smth");     // initialisation
       }
       ~Derived()
       {
 Y     delete[] drvtxt;
       }
        func(arg){ do something with bsnr, bstxt, drvnr, drvtxt, }
};
My question is where can I delete[] bstxt ?
Am i allowed to do it in line X? like:
Code:
virtual ~Base()=0
{ delete[] bstxt; }
or can I free memory for a Base member in a deriver class?
Code:
~Derived()
       {
        delete[] bstxt;
        delete[] drvtxt;
       }
Any hint or ideea is welcome.
Thank you.