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