× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
適当に作ったクラスのメンバ関数
const Weapon (&getSubWeapon()const)[SUBW_NUM] {return ac.subw;} const Weapon型の配列を戻り値としたい。でもC++は配列を戻り値にできない。 そこで参照を使って配列の参照を戻り値とするとこんな変態的な書き方になる。 というわけでここにメモしておく。分からなくなったらここを見る作戦です。 ・参照なので当然のことかもだけど配列の大きさは省略不可能 ・戻り値が参照であることを示す&は関数名の前につけ()で囲む ※Weaponと離れてしまうけどこうしないとコンパイルが通らない ・メンバ変数を変更しないことを示すconst修飾子は関数名()の後ろにつける ・そのconst修飾子の後ろで括弧を閉じてから配列の大きさをつける とにかく分かりにくい。変態以外には読めないソースコードが 出来上がるので健常者の手に渡る可能性が低い場合に使いましょう。 参照の利点・欠点を理解している人なら、C++を勉強している途中で この書き方にたどり着くだろうと思います。ソースコードを見る人が そういう人に限られる環境なら使いこなしてみましょう。 以上、こんな偉そうなことを言う初心者からの助言でした。 あと、const Weapon型って表現は正しいのか分かりません。 constは修飾子、Weaponは列挙型につけた型名なので感覚的には正しい。 PR |
|