c++

GCC:静的ducktypingもどきでテンプレートメンバ関数を利用

GCCだとうまく解析してくれないので、明示的にtemplateキーワードを指定してやる。http://ml.tietew.jp/cppll/cppll/thread_articles/8828

libpcl on darwin

動かない。困った。

libpcl and c++ exceptions

てきとーなテストコード書いて問題なかった。somari(Gentoo Linux / Linux 2.6 x86_64)でテスト。あとでpersianのwin32環境でもテストすること。

PCLとGNU Pth

5分で両方のAPIリファレンスを流し読みしただけなので、あんまり参考にしないように。Pthはpthread互換APIを目指してるようなかんじ。APIがみょーに多い。システムコールがスレッドの中で呼ばれることを気にしている様子。(あの悪しきスレッドキャンセルへ…

C++で継続・コルーチン

タスク定義をどうするかが問題。なんとかcontinuation(継続)をC++でかけないものか。必要なのは、いわゆるプログラムカウンタ(+レジスタ群)の保存と、スタック上のローカル変数データの保持。FSMモデルならなんとかかけます。(参考:d:id:yaneurao:200…

std::vectorでイテレータループ内でのerase

std::vector<int> test; test.push_back(0); test.push_back(1); test.push_back(2); std::vector<int>::iterator i; for(i = test.begin(); i != test.end();) { if(*i == atoi(argv[1])) i = test.erase(i); else ++ i; } で正常に動作する。2007/04/22追記:eraseの</int></int>…

std::numeric_limits

今まで普通にfloat.hとか使ってたよ…

boost::Pool

http://boost.cppll.jp/HEAD/libs/pool/doc/index.html自分で書く手間が省けた。

比較演算子

c++

正しいのはどっちでしょう >= or => 紛らわしいなぁ。

コンテナ実装

std::vectorとstd::vectorどっちがいいんだろう。 * std::vector std::vector 派生クラスの扱い × ○ 要素追加 ×(普通に書くと一時オブジェクト発生) △(小さいnew) 読み込み速度 ○*1 ×(ポインタ参照一回余計に発生) ソート × ◎ デストラクタ 記述なしで大丈…

リンカエラー

テンプレート化したクラスでシンボルが見つからないエラー。テンプレートの関数定義をヘッダーファイルに書けば解決するんだけど、これではテンプレート関数定義を変えるたびに膨大な再ビルドが必要になってしまう。明示的インスタンス化はしてます。困るの…

std::string

c++

今までC言語と同様にchar配列とstr*()系の関数を使った文字列処理をC++でも書いていたのだが、流石に気持ち悪くなってきたのでそろそろstd::stringを使うことにする。CStringは便利だったんだが環境依存だし、自作するのも結構大変なので、結局std::stringに…

constメンバ変数

c++

constメンバ変数はコンストラクタの初期化リストで初期化するのだが、その前に処理を書けないのがつらい。 const_castで無理やり書くか、メンバ関数コンストラクタを作ってそこで計算するか。またMSVCだとC4512コンパイル警告が消えないというのも困る。*1そ…

浮動小数点例外のcatch

どこかからNaNが伝播している模様。困った。Visual Studio 2003では各種浮動小数点演算の例外をcatchできるようになっているが、デバッグ→例外で指定するだけではだめで、 // unmask so that floating point exceptions are thrown _controlfp(0, _MCW_EM);…

templateクラスのstaticメンバのインスタンス化

Visual Studio 2005だと FSingletonDestructorChain* FSingleton::ms_pInst = 0; でコンパイルが通るのに、GCCだと template<> FSingletonDestructorChain* FSingleton::ms_pInst = 0; としないと通らない。これはC++の文法的に上が間違っているということな…

メンバ変数のオーバーヘッド

DGCAアーカイバの作者さんによるループの最適化を読んで。 メンバ変数へのアクセスにオーバーヘッドがあることを失念していた。 よくよく考えてみればメンバ関数はthiscallで呼ばれるし、m_hogeと書いてあるのは実際はthis->m_hogeの略なんだよな。

floor, ceil, trunc, round

floor 引き数を越えない最大の整数値 ceil 引き数を下回らない最小の整数値 trunc 0 に近い方の整数値に丸める round 最も近い整数値に丸める (2 つの整数の中間値の場合は 0 から遠い方に丸める) 以上[JM Project:http://www.linux.or.jp/JM/]より。

実装とインタフェースの分離

外部ライブラリへのインタフェースクラスでのクラスヘッダーに外部ライブラリのヘッダーincludeが含まれてしまう問題。 #Colladaファイル読み込み用のCollada DOMライブラリとかなかなかいい解決法が思いつかない。Abstract Factory or Factory Methodもど…

Singleton

Singletonは意外と難しいみたい。考えておかなければならないこと: いつ破棄されるのか 破棄時に他のSingletonが必要になったらどうする?→Loki参照 でも稀過ぎるケースなのでfectiでは無視 マルチスレッド環境での二重生成 static実装(Mayor実装)でも回避…

libxml linker error on VSnet 2005

error LNK2001: 外部シンボル "_xmlFree" は未解決です。 libcollada_LIBXMLPlugin.lib http://mail.gnome.org/archives/xml/2004-February/msg00380.html使っていたバイナリパッケージがVS.netに対応していなかったというオチ。Cランタイムを静的リンクする…

多重継承

ひっかかったー。 ×: class CASDF : public A, B, C, D { 縲郴 ○: class CASDF : public A, public B, public C, public D { 縲郴上だとB, C, Dはデフォルトのprivate継承(親のメンバはすべて子のprivate扱い)になってしまう。