[MSVC] Инициализация членов класса
От: Abyx Россия  
Дата: 18.04.11 16:06
Оценка:
Сейчас где-то час потратил на то чтобы найти баг в следующем коде:

#include <vector>

struct Foo
{
    Foo() {}

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

    std::vector<int> v;
};

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

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

    Bar bar;
    Foo foo;
};

int main()
{
    Holder h;
}


Как такого избежать?
In Zen We Trust
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.