- 562 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 00:21:05 ]
- コンパイラの警告について質問です。
環境はVS2008Expressです。 先ほど2時間悩んだ末に発見した間違いがありまして、これを警告で表示してほしいなぁと思いました。 内容は Hoge c;//Hogeはクラス if (略) c = Hoge(0); else Hoge(1); というもので、elseの後ろは本来c = Hoge(1)とすべきところを、c=を忘れてしまいました。 気づいて直した後に、警告LV3なのが悪かった、4にしようと最高である4にしました。 期待としては cが「初期化されていない可能性のあるローカル変数」として警告される。 Hoge(1)は無意味だ〜という警告(ただ、コンストラクタ内でグローバルな変数にアクセスする設計もありえるあるから、これは警告にはできないか・・・?) のどちらかを期待したいたのですが、駄目でした。 前者は特に不思議なのですが、つかわれ方が Honya(&c); というポインタ引き渡しの場合には警告にならないようなのです。 (Honya(const Hoge *p)なので、constであるから警告になってもよさそうなものですけど…) この(くだらない)ミスを再発しないためには、何か良い方法はあるでしょうか? というつかわれ方をしていたせいで、警告がでませんでした
|

|