2010-11-26 11 views

答えて

7

問題がboost::assign::list_of()に渡されるToy()オブジェクトです。これらは、あなたがこれを行うことができ、スタック上に作成しないように(ヒープになります)Boxオブジェクト

にコピーされる前にスタック上に作成される一時オブジェクトです:

Box() : m_toys() 
{ 
    Toy* t = new Toy; 
    for (int i = 0; i < 3; ++i) 
     m_toys.push_back(*t); 
    delete t; 
} 
+0

+1は、boost :: assign :: list_ofに+1します。いい視点ね! –

1

boost::assign::list_of(Toy())(Toy())(Toy()) 

は、スタック上の一時的な(巨人)を生成し(ウー!)おもちゃのコンストラクタに渡されています。

1

Box()コンストラクタでスタックオーバーフローが発生しています。私はどのようにboost :: assignの仕事をしているのか分かりませんが、引数として、Toyの型の3つの一時変数を渡しているようです。スタック上に構築されます。

関連する問題