× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
C++の勉強の一環で作成している空っぽのエンドレスバトルのような
ゲームですが、現在バグが取れません。UMLをしっかり作成して もう少し堅実に進める必要があると判断し、しばらくはUMLの習得 をしようと思います。 とりあえず現在のソースコードを別の記事にて公開します。 クラスだけになりますがUMLを作るだけなら、関数の中身は そこまで重要じゃないので後回しです。 PR |
適当に作ったクラスのメンバ関数
const Weapon (&getSubWeapon()const)[SUBW_NUM] {return ac.subw;} const Weapon型の配列を戻り値としたい。でもC++は配列を戻り値にできない。 そこで参照を使って配列の参照を戻り値とするとこんな変態的な書き方になる。 というわけでここにメモしておく。分からなくなったらここを見る作戦です。 ・参照なので当然のことかもだけど配列の大きさは省略不可能 ・戻り値が参照であることを示す&は関数名の前につけ()で囲む ※Weaponと離れてしまうけどこうしないとコンパイルが通らない ・メンバ変数を変更しないことを示すconst修飾子は関数名()の後ろにつける ・そのconst修飾子の後ろで括弧を閉じてから配列の大きさをつける とにかく分かりにくい。変態以外には読めないソースコードが 出来上がるので健常者の手に渡る可能性が低い場合に使いましょう。 参照の利点・欠点を理解している人なら、C++を勉強している途中で この書き方にたどり着くだろうと思います。ソースコードを見る人が そういう人に限られる環境なら使いこなしてみましょう。 以上、こんな偉そうなことを言う初心者からの助言でした。 あと、const Weapon型って表現は正しいのか分かりません。 constは修飾子、Weaponは列挙型につけた型名なので感覚的には正しい。 |
C++のオブジェクト指向について
Javaとあまり変わらないので省略します(ぉ 代わりに空っぽのEBができたら違いを比較しながら 記事でも書こうと思います。 とりあえずファイルの分割方法などのプログラミング以前のことが ある程度完了。参考書に書いてあることがちょっとずれてたりして 少し苦戦したかも。「Effective C++」もまだあまり読んでいないです。 この記事を書いてから20分後追記 Effective C++を理解できるレベルに達してないので数年後に後回し。 ある程度ファイルなどを作成して少し疲れたのでOpenCLに浮気します。 どうせそのうち両方やる予定だし並行しても良いと思います。 3/5追記 空っぽのEBがそろそろできそうな予感がするのですが、面倒臭い ので比較とかしなくて良いような気がする。C++っぽい書き方を した部分をちょっと抜き出すとかの方がずっと有用だと思うので、 それならやるかもしれません。 |
C++に関するちょっとしたメモ
でも長いので続きにしまっておく ちょっとした小技の盛り合わせみたいな? オブジェクト指向以外の内容はほとんどこれで終わりです。 1日で参考書の300ページ以上をスルーする超駆け足でした。 いよいよ次回から空っぽのエンドレスバトルのようなゲームの 作成に関わってきます。 |
C++の参照(reference)の使い方
int variable; int &rvar = variable; 値やアドレスが初期化するときに与えた変数と同じになる したがって他の変数の値やアドレスをいじることができる |
C++のデフォルト引数の使い方
void func(int arg1, int arg2=0, int arg3=1); 引数を指定しなかった場合に渡されるデフォルトの引数 プロトタイプ宣言で書いておき本体には書かない プロトタイプ宣言をしてないなら本体に書く 後ろの引数から順に設定しなければならない C++の関数のオーバーロードの使い方 void func(int arg1, int arg2, int arg3) void func(int arg1, int arg2) void func(double arg1, double arg2, double arg3) 引数の個数や型が異なれば同じ名前の関数を複数定義することができる C++の関数テンプレートの使い方 template <class T> T func (T arg1, int arg2) 仮引数や戻り値に仮の型名を使うことができる プロトタイプ宣言と本体の両方で宣言する intやdoubleなど引数の型が違っても同じ処理をする場合に有用 |
C++のインライン関数の使い方
inline void func(int arg); 関数呼び出しの処理を削減したい場合に使う 恐れ多い表現をすると 呼び出し元に関数の中身をコピペする という表現になる |
C++の条件演算子の使い方
(条件式)?A:B 条件式の計算結果ががtrueならA、falseならBになる |
だいぶ前にC++の勉強をするだとか言い出しておいて
まだ何もやっていなかったりします。というのも、単に習得するだけでは 何も楽しみがないので、後回しになってしまいがちです。 そこで、この記事の続きには作るプログラムについて書いておこうと思います。 |
前回はFFmpegの話をしていたのに・・・
何で話題統一しないのって思います。自分で( えっーと・・・うん。本題に入りますね。 タイトル通り、C++の習得をしておこうと思います。 C言語の方が馴染むんだけど、C++で作られているプログラムも 読めるようにしておきたいと思います。 例えば、Chromiumをちょっと書き換えて使おうかな・・・って思ったとします。 しかしChromiumはC++で開発されています。そのため今使えるJavaとC だけでは書き換えることができません。 そんなわけでソースコードが公開されているソフトウェアをいじるために C++を習得しようと思いました。まあ習得するだけならJavaやCと大差ない ので睡眠学習程度の勢いでやろうと思います。 参考書が問題かな・・・というより参考書を買うお金が問題w とりあえず今日のところは開発環境でも続きに書きます。 |
| ホーム |
|