CArrayのoperator[] / うわさの英単語集の第2弾
CArrayのoperator[]
またCArrayではまった。
// CArray::operator [ ] の定義
TYPE& operator []( int nIndex );
TYPE operator []( int nIndex ) const;
const演算子が付くときはコピーで返すのか。てっきり
const TYPE& operator []( int nIndex ) const;
だと思ってコーディングしてワーニングになってしまっていた。
状況としては、自分で作ったクラスのメンバ変数としてCArrayを使って、operator[] constを定義してCArrayの要素を返そうとしたら
warning C4172:ローカル変数またはテンポラリのアドレスを返します
が出てしまった。というか出てくれたから気づいたわけだけど。
そもそもprivateなメンバ変数の参照を返してる自分のクラスも行儀が良くないのかもしれないけど、それはそれとしてCArrayのほうは
const TYPE& operator []( int nIndex ) const;
ではC++的にまずいのだろうか。vectorなんかはどうしてるんだろう。要調査。
うわさの英単語集の第2弾
買っちゃった(゜∀゜)
この記事へのコメント
※ このコメントは旧ブログシステム(tDiary)からの移行です。
testさんからのコメント(2010-03-05 21:34:36)
test