Boost logo

Boost Users :

Subject: [Boost-users] Scoped_array with constructors?
From: Space Ship Traveller (space.ship.traveller_at_[hidden])
Date: 2009-04-21 06:05:44


Hi,

I want to use scoped_ptr with std::vector or scoped_array, but the
problem is that the type I want to allocate has a non-trivial
constructor.

What is the standard way to make this work? My current best guess is
to use std::vector with boost::scoped_ptr in the following way:

TextureUnitsController::TextureUnitsController ()
{
        GLint textureUnitCount = 1;
        glGetIntegerv(GL_MAX_TEXTURE_UNITS, &textureUnitCount);

        m_textureUnits.resize(textureUnitCount);
        
        for (unsigned i = 0; i < textureUnitCount; i += 1) {
                m_textureUnits[i].reset(new TextureUnit(GL_TEXTURE0 + i));
        }
        
        std::cerr << "Found " << textureUnitCount << " texture units..." <<
std::endl;
}

But this doesn't work because scoped_ptr also has a non-trivial
constructor, so resize fails.

Thanks
Samuel



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