2009-07-01から1ヶ月間の記事一覧

多重継承な場合の、メモリ配置について

C++

A、B二つのクラスを継承したCというクラスを、A、Bにキャスト、あるいはそこからさらにアップキャストしたらどうなるかを実験してみた。あくまで、手元のVS2008SP1で実験してみた結果。 #include <iostream> using namespace std; #if 01 class A{ public: char m_a[5]</iostream>…

C++0x、コンセプト除外の決断

C++

C++0x、コンセプト除外の決断というタイトルで、Bjarne Stroustrup博士がDr.Dobbsに7月22日付けで寄稿していた。その中でも、「何が起きたのか」について語っているくだりを読みながらメモしているうちに勝手な訳文ができてしまったのでせっかくだからメモ。…

だまし絵展に行ってきた

渋谷Bunkamuraで開催されている、「だまし絵」展に言ってきました。結構面白かった。まるでSIGGRAPHのエマテクやアートギャラリーを見ているようだったとまでは言いませんが、人間は昔から視覚のいたずらというものを楽しんできたのだなーと、またそういうも…

C++をSTLつきのC言語のように捉えてみる

C++

C++とかってそのまんま正直に使ってると多重継承とか入るとすぐダウンキャストとかアップキャストとかできなくなったりして焦ったり騒いだりしなきゃなんないでめんどくさくねーっすか。時としてですが。 基本的にメモリ管理自分でやっちゃえば、オブジェク…

operator new/delete 覚え書

●operator new() のオーバーライドでC2660エラー MFCのコードをコンパイル中に、operator new() をオーバーライドしようとしてる箇所で、「operator new():3つ以上の引数は指定できません」とかわけのわからんエラーで怒られて困ることがあるが、これはMFC…

パソコンするときは部屋を明るくしよう

部屋暗くしてパソコンしてたらなんだか目の奥のあたりから体の芯のあたりまでむずむずしだして、一瞬だが吐き気のような、何だか急に暴れだしたくなるような、「うわー!」っと叫びたくなるような、ようするにすげー気持ち悪くなった。。 これが激しくなると…

クラスメンバー宣言/getter/setter自動記述マクロ

C++

// macro for properties #define POC_PROP( typ, mem, Mem )\ public:\ void set##Mem( const typ& val ){ mem = val; } \ typ& ref##Mem( void ){ return mem; }\ const typ& Mem( void ) const { return mem; }\ typ* p##Mem( void ){ return &mem; }\ pr…

C++0x のconceptが却下されるのか?

C++

という噂があるらしい。が、ほのめかすだけできちんと説明してくれてる記事がなかなか見つけられない…。conceptsはある意味C++0xの目玉機能の一つだと思ってたのにぃ。。テンプレートがより明示的でわかりやすくなるものらしいと楽しみにしていたのだが、ポ…

三角ストリップ頂点インデックスの展開

三角ストリップになった頂点インデックス並びを、普通の三角頂点インデックスに展開するための最短変換コードを考えました。もういちいち毎回悩まなくてもいいのです!ループの中に条件判定もないし、おまけにreserveもかましてるので、パフォーマンスも完璧…

空ドームに、サボテンに、、

空ドームが完成した。砂漠の中にいます。ウォークスルーカメラを完成させて下さい。CADとかツール系の仕事ばっかやってると本来OpenGLでできること、まだまだやりたかったことを忘れてしまいそうになるね。それはとてももったいないし、さびしいことだ。もっ…

vc2008SP1でtr1::bindを使う

C++

vc2008のSP1でtr1::bind()を使う場合は、 std::tr1::bind( &shScene::Draw, this->m_scene, _1 ), だとどうも、「_1」が不明ですとか言われてしまう。これは std::tr1::bind( &shScene::Draw, this->m_scene, std::tr1::placeholders::_1 ), という感じで「p…