Boost logo

Boost Users :

Subject: Re: [Boost-users] Scoped_array with constructors?
From: Rune Lund Olesen (rune.olesen_at_[hidden])
Date: 2009-04-21 09:26:24


Hi Samuel,

Assuming m_textureUnits is a std::vector, have you tried to use
m_textureUnits.reserve instead of resize ? I think that could solve your
issue. Then you might also want to consider to use m_textureUnits.push_back
instead of m_textureUnits[i].

Kind regards

Rune

On Tue, Apr 21, 2009 at 12:05 PM, Space Ship Traveller <
space.ship.traveller_at_[hidden]> wrote:

> 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 mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>



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