Re: [MSVC] Инициализация членов класса
От: martin Беларусь  
Дата: 18.04.11 19:38
Оценка:
Здравствуйте, Abyx, Вы писали:

A>Сейчас где-то час потратил на то чтобы найти баг в следующем коде:


A>
A>#include <vector>

A>struct Foo
A>{
A>    Foo() {}

A>    void load(/*...*/)
A>    {
A>        v.clear(); // тут возникает assert "итераторы несовместимы"
A>    }

A>    std::vector<int> v;
A>};

A>struct Bar
A>{
A>    Bar(Foo& f)
A>    {
A>        //...
A>        f.load(/*...*/);
A>    }
A>};

A>struct Holder
A>{
A>    Holder()
A>        : bar(foo)
A>        , foo()
A>    {}

A>    Bar bar;
A>    Foo foo;
A>};

A>int main()
A>{
A>    Holder h;
A>}
A>


A>Как такого избежать?


Посмотри в сторону boost::base_from_member.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.