Boost logo

Boost Users :

Subject: Re: [Boost-users] Scoped_array with constructors?
From: Nikolai N Fetissov (nikolai-boost_at_[hidden])
Date: 2009-04-21 09:47:46


Samuel,

I don't see any explicit reference to scoped_ptr in your code,
so assuming you are trying to use std::vector<boost::scoped_ptr<X> >.
This doesn't work since, quoting documentations, "It has been suggested
that scoped_ptr<T> is equivalent to std::auto_ptr<T> const."
Using shared_ptr instead might or might not fit your needs, depending
on whether you are OK with cost of reference counting.

Best,

--
 Nikolai
> 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 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