2010-11-24 14 views
3

コンストラクタの初期化リストでベクトルを初期化したい。このベクトルは、パラメータ化されたコンストラクタを持つオブジェクトで構成されます。私が持っているもの:ベクトル初期化でオブジェクトのデフォルト以外のコンストラクタを呼び出す

Class::Class() : 
    raster_(std::vector< std::vector<Cell> > (60, std::vector<Cell>(80))) 
{ 
... 

上記の2つのパラメータでCell :: Cellを呼び出すにはどうすればよいですか?明らかに:

raster_(std::vector< std::vector<Cell(true,true)> > (60, std::vector<Cell(true,true)>(80))) 

は機能しませんでした。

+2

完全に混乱しています。 'Class'と' Cell'の宣言を投稿してください。 –

答えて

2

のように、その後、それ自体のベクトルをあるraster_場合は、試してみてください:私は初期から無用std::vector<std::vector<Cell> >を削除

Class::Class() : 
    raster_(60, std::vector<Cell>(80, Cell(true, true))) 
{ 
    /* ... */ 
} 

注意を。また、これはCellのコピーのコストに応じて、非常に効果的でない可能性があることに注意してください:

  • それが60回提供ベクトルをコピーしてstd::vector<std::vector<Cell> >を作成し、80倍した値Cell(true, true)
  • をコピーしてstd::vector<Cell>を作成します(80要素それ自体を含んでいます)!
+0

ああ、私は型を排除できるのか分かりませんでした。あなたは非常に効果がないと言います。どのようにして配列を初期化する必要がありますか? – problemofficer

+0

@problemofficer: 'Cell'がコピーするのが安い間はいいと思います – icecrime

1

:raster_(std::vector< std::vector<Cell> > (60, std::vector<Cell>(80, Cell(true, true))));

raster_は、ベクトルを取る何かである場合。この

:raster(60, std::vector<Cell>(80, Cell(true, true)))

関連する問題