2008-12-01から1ヶ月間の記事一覧

delegate5

前回delegate4 - while( c++ );の続き。以下のようなプログラムでフォームに対してボタンを配置することが出来る様になりました。 class HogeForm : public Form { private: ButtonPtr button1; ButtonPtr button2; public: HogeForm() : Form() , button1( …

delegate4

前回delegate3-C#風windowsアプリ - while( c++ );の続き。 日があいてしまったので、別エントリに書きます。 class.h アプリケーションで使用しているnamespace、クラス、列挙型の一覧を記述しておきます。 shared_ptrで管理するクラスはdef_managed_class…

delegate3-C#風windowsアプリ

以前の http://d.hatena.ne.jp/setuna-kanata/20081207/1228668906 delegate2 - while( c++ ); を使って、C#に近い形でwindowsアプリを作ってみます。もちろんC++/nativeです。 C#・C++/CLIを使え、とか突っ込まないで下さいw 目標 Formを継承したメインフ…

delegate2

C++

delegate1-boost::signalを読む - while( c++ );の続き。何となくboost::signalの仕組みがわかってきたので実装してみます。 目標 int hoge( int, float ) { return 1; } struct piyo { int operator()( int, float ) { return 2; } }; class fuga { public:…

xbox360光学ドライブ故障に関して-Final-

やっと直りました〜。 ちょうど1ヶ月ですね。 某カメラに修理を頼んだのが11月23日で、修理報告書に書いてある受付日が12月2日。 修理開始までに1週間以上かかるなんて。。。 修理完了日が12月18日。修理自体、意外に時間がかかるんですね。 手元に届いたの…

xbox360光学ドライブ故障に関して。

修理に出して4週間経過しましたがまだ戻ってきません。。。 販売元の某量販店に持って行ったのが失敗だったようです。 マイクロソフトに直接送れば確か10日前後で帰ってくるはずです。いつになればプレイできるんでしょうか? ところで、こんな記事を見つけ…

delegate1-boost::signalを読む

C++

C++でC#っぽいdelegateを作ってみよう、というよくあるネタです。 というか、boost::signalですね。 ここBoost.Signals �`���[�g���A��を読むと非常に面白いです。 delegateを実装する際、戻り値の扱いをどうしようか迷っていたのですが、ここに解決策があり…

function-まとめ

とりあえず最低限の機能だけです。 function1 - while( c++ ); function2 - while( c++ ); function3-mem_fun - while( c++ ); function4-mem_fun - while( c++ ); function5-bind - while( c++ ); function6-bind - while( c++ ); function7-placeholder - …

function9-perlを使ってみる

絶望した!preprocessorに絶望した! 可読性が悪すぎですね。。。 VCでデバッグするのも一苦労です。 偉い人が言ってましたが、「使っておいしいものは使え。使えるものは使うな。」 まさにこれですね。 ということで、perl使ってみましょう。とりあえずwind…

function7-placeholder

C++

前回function6-bind - while( c++ );の続き。 preprocessorを使うのはある程度完成に近づいてからのほうが良さそうなので、先にplaceholderに対応させます。 今日の目標 placeholderを使えるように。 class fuga { public: int func( int, float ) { std::co…

function8-function+bind

C++

前回function7-placeholder - while( c++ );の続き。以前function2 - while( c++ );のサンプルを多少修正したfunctionです。 operator=でcontentの設定 //function.contentが0の場合に投げる例外 class bad_function_call{}; //基本形 template< typename T …

function6-bind

C++

function5-bind - while( c++ );の続き。 メンバ関数用bind メンバ関数を呼び出すためには 戻り値 呼び出し元クラスのインスタンスの参照又はポインタ メンバ関数のアドレス 引数 が必要です。 呼び出し元の参照・ポインタを別で持たせてしまうと、グローバ…

function5-bind

C++

前回function4-mem_fun - while( c++ );の続き。 boost::functionはboost::bindと組み合わせて使うと非常に便利なので、boost::bindと同等の機能をもつbindクラスを作ってみましょう。 ただしplaceholderがあると複雑になるので、まずはplaceholder無しのbin…

function4-mem_fun

C++

前回function3-mem_fun - while( c++ );の修正。以下のように、 Tの参照 Tへのポインタ shared_ptr を受け取って、すべて同一の書き方で呼び出せるようなmem_funを作ります。 class Hoge { public: int func( int, float ) { return 1; } }; template< typen…

サンプルを落とせるようにしました。

5,6年ぶりに自分のサイトを活用しますw基本的にVC++2008ExpressEditionで動作するサンプルのみです。 可能な限りデバッグはしているつもりですが、正確性、安全性等を保証するものではありません。 これらの情報を使用することによって生ずるいかなる損…

function3-mem_fun

C++

前回function2 - while( c++ );の続き。いろいろ勘違いしていたので書き直し

C++でjava風リスナを実装する

前回いまさらwindowsプログラミング - while( c++ );のプログラムにリスナを追加してみます。 今日の目標 WindowListenerインターフェイスを実装した派生クラスをウィンドウに追加する。 WindowClosing()でSystem::Exit()を呼び出すと、プログラムが終了する…

いまさらwindowsプログラミング

ちょっと気分転換で、windowsプログラミングを。 VC++ExpressEditionを使っています。 WinMain #include <windows.h> int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int ) { return 0; } これまでのようにcoutで出力できるように、コンソールを割り当てましょう。 </windows.h>…

function2

C++

前回function1 - while( c++ );の続き。 テンプレート引数に戻り値、引数の型を指定して、通常の関数を格納することが出来ました。 int hoge( int, float ){ /*...*/ } int main() { function< int ( int, float ) > a( hoge ); int b = a( 1, 2.0f ); //hog…

function1

C++

今日はboost::functionについて。 日記を書き始めるきっかけになったものです。 boost::functionの実装のために情報を探していた際、以下のエントリを見つけて感動しました。 Boost.Functionの実装技術(1) - Type Erasure - Faith and Brave - C++で遊ぼう 2…

preprocessor

C++

boost::function実装時にあると便利です。 トークンの連結 #define pp_cat( a, b ) a##b 引数で渡したa、bが連結されてabになります。 int pp_cat( a, b ) = 0; //int ab = 0; しかし、以下のように引数に自分自身を渡すとコンパイル時に展開されません。 in…

C++って難しいですよね。

ぶっちゃけ、自分が書いている内容はN番煎じの超劣化コピーなんですよね。もう少し特化しないと意味ないですねぇ。 それにしても、5年後、10年後にはC++0xが標準になっていると思うと。。。私はC言語から始めましたが、5年後にはC++0xから始めるのが普通にな…