c++

enum の話

c++

enum を使うと、連番のシンボルが自動的に生成されるので要素数の増減、特に中抜けが発生する可能性が高い場合には重宝します。で、enum は列挙名をつけることが出来て、列挙名は型の様な振る舞いをします。そしてC++ の厳密な型チェックを利用すると意図し…

1日半ハマッた

仕事のプロジェクトの作業環境移行中にプログラムがハングアップしてハマッて リーダーに相談してたら dynamic_cast を見落としていることに気付いた。 RTTI を有効にしていなかった。てか dynamic_cast がいっぱいあることに絶望した!

文字列テーブルのデータ構造

文字列テーブルから文字列を取り出すときには対になるラベルを用います。 C++ の場合には enum を使って実現するのが効率が良いと思われます。 ラベル 日本語 英語 STR_HELLO こんにちは。 Hello. STR_BYE さようなら。 Good bye. このテーブルから enum { S…

Lua に手を出してみる

いざというときのために Lua を試してみました。バージョンは 5.1。以下のスクリプトを C++ から呼び出すテストをしてみました。 f = function () print("hello") end C++ 側のプログラムは以下のような感じ int _tmain(int argc, _TCHAR* argv[]) { // LUA …

goto が危ないということが!「言葉」ではなく「心」で理解できた!

結論から言えば、変更が発生したときに処理の流れをつかみにくいのが良くありません。 for ( int index = 0; index < count; ++index ) { // .. 何かしらの処理 if ( condition[index] ) { goto NEXT; } // .. 何かしらの処理 NEXT: // .. 結果の処理 } さて…

もしもの時の…

今日ちょろっと書いていたコードのこと const size_t objCount = objArray.size(); for ( size_t objIndex = 0; objIndex < objCount; ++objCount ){ // objArray[objIndex] を順に処理 } for のカウンタのインクリメント部分が間違っています。 しかし objC…

reinterpret_cast

C++ の思想としてキャストはなるべく無いほうが良い、というのがあって、 作った人の考えには従うようにした方が良いのだろうなという考えとともに reinterpret_cast も使わない方が良いのだろうか。と悩んできました。 そもそも reinterpret_cast の何がま…

C++ スタイルのキャスト

C++ のキャストというと static_cast, dynamic_cast, const_cast, reinterpret_cast の 4 種類があります。 「 C++ の設計と進化(isbn:4797328541)」などを読むと分かるように C++ では キャストは極力使わないようにしたほうが良いという考えがあるようです…