2007-03 << 2007-04 >> 2007-05

2007-04-24 (火)

*オーバーロードと「0」の罠

C++で昔作ったクラスを流用して使ってたのですが,とあるメンバの引数に「0」を入れたときだけ,コンパイルが通らない.メンバ関数がオーバーロードされてて,片方はポインタ,もう片方はlongを取るようになっていた.「0」をポインタの NULL と long のどちらに変換して良いか分からないのが原因らしい.「0」だけ暗黙のキャスト時の扱いが違うのは便利なようで,罠もあるっぽい.とりあえず,「0L」とサフィックスをつけて凌ごう.

というか,ポインタを取る方は private なメンバ関数で,存在も忘れていた.private なメンバなんだから外から呼ぶ時には無視して欲しい.