C++相談室 part21
■ このスレッドは過去ログ倉庫に格納されています
0585デフォルトの名無しさん
NGNGC++のテンプレはよくは知らんので勘違いだったらすまんが、
引数渡しの方法がどうこうとか、push_back(arg)が引数の更に
コピーを登録しているとかなんて問題じゃなくて、543のコードは
実際不味いだろ。
v.push_back(new Hoge());
の v.push_back()の引数にオブジェクトそのものじゃなくて、newで
生成したオブジェクトへのポインタを渡しているが、メイン側では
そのポインタをどの変数でも受けてないだろ。
コンパイラはポインタを渡している関数の素性や、その先でちゃ
んとpop、delete しているか迄は関知しないから、プログラム的に
は、参照が残るがどうか分からない行方不明候補のオブジェクト
が生成された事になる。
(要は、 new Hoge(); ってのを単体でやっているのと同じ状態)
だから、「本当にいいんかい、ワレ? テメェ、この関数はちゃんと
先で責任取っているんだろうな?」ってワーニング出しているんだよ。
ワーニング吐く吐かないは、単なるワーニングレベルオプションの
設定の違いかと思われ。
■ このスレッドは過去ログ倉庫に格納されています