一時オブジェクトの寿命がー 未定義の動作コワイヨ。 他にもいろいろ突っ込みどころが… こんなコードが世の中に出回っているのです…
struct Foo {
// コンストラクタとか
// メンバ変数とか
};
void Hoge( Foo* foos[], int n )
{
// 読み取って何かする
// 書き込みはしない
}
int main(int argc, char* argv[])
{
Foo* foos[] = { &Foo( /*何か*/ ), &Foo( /*初期値*/ ) };
Hoge( foos, 2 );
return 0;
}
何らかの理由でポインタの配列を作りたいなら、この初期化はだめだよねえ。スコープの関係で、オブジェクト作るそばから破棄されうる(よね?)
Hogeの引数をconst std::vector<Foo>&のみでいいんじゃないかな?
std::vector<Foo> foos = {Foo(...), Foo(...)};とかinitializer_listなのでC++11必須ですが