CArrayのoperator[] / うわさの英単語集の第2弾

投稿日: 2005年01月31日 更新日: 2017年07月22日

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

名前:宮内 はじめ

Code for Nagoya名誉代表

E2D3名古屋支部長

プログラマーです。GISやデータビズが好きです。このサイトは宮内の個人的なメモです。

プロフィール

お問い合わせ