Boost logo

Boost Users :

Subject: Re: [Boost-users] Compile errors using BOOST_FOREACH on Fedora Linux
From: Eric Niebler (eric_at_[hidden])
Date: 2009-05-22 13:36:12


(Please don't reply to digests. Thanks.)

Tron Thomas wrote:
> Eric Niebler wrote:
>> Tron Thomas wrote:
>>> I have a class defined like this:
>>>
>>> class SomeObject
>>> {
>>> public:
>>> ...
>>>
>>> virtual void Method();
>>>
>>> ...
>>>
>>> private:
>>> typedef boost::shared_ptr<AnotherObject> AnotherObjectPtr;
>>>
>>> ...
>>>
>>> std::vector<AnotherObject> m_objects;
>>>
>>> ...
>>> };
>>>
>>> void SomeObject::Method()
>>> {
>>> ...
>>>
>>> BOOST_FOREACH(AnotherObjectPtr object, m_objects){
>>> object->DoSomething();
>>> }
>>> }
>>>
>>> The code compiles fine using Boost 1.39.0 on Mac OS X 10.5 (PowerPC).
>>
>> That's surprising since m_objects is a vector of AnotherObject, not a
>> vector of AnotherObjectPtr. (Hint: *always* post the actual code that is
>> failing.)
>>
> Yes, the declaration of m_objects should have been:
>
> std::vector<AnotherObjectPtr;> m_objects;
>
> That is consistent with the actual code where the problem is happening.
>
> Given that what do people know about how to fix the compiler error?

Please post source code that demonstrates the error. Nobody can help you
until we know what the problem is.

-- 
Eric Niebler
BoostPro Computing
http://www.boostpro.com

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