|
Boost Users : |
Subject: [Boost-users] Is there a way to delay the initialisation of a member in a C++ base class until the ctor of the derived class is executed?
From: tom tan (ttan_at_[hidden])
Date: 2009-03-25 04:26:23
Here's the scenario: I want define a base class that allocate some
buffer once for all derived classes, while the size of the buffer varies
among different derived classes. I could achieve it in this way:
class base
{
public:
base():size(), p_array(0){}
private:
size_t size;
boost::shared_ptr<unsigned char> p_array;
};
in the derived class:
class derived
{
public:
derived(size_t array_size):size(array_size)
{
p_array.reset(new unsigned char[size]);
}
private:
size_t size;
boost::shared_ptr<unsigned char> p_array;
};
However, in order to simplify the design of the derived class, I really
want to put this line:
p_array.reset(new unsigned char[size]);
to somewhere in the base class, thus writing it only once. Is there any
C++ design pattern could achieve it? Thanks
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net