2014年4月18日 星期五

delegate 元件

相當於 c# 的 delegate、boost 的 function,下載點:

https://www.dropbox.com/s/2qwqb516v7fi47s/delegate%202.1.7z
http://pan.baidu.com/s/1kT0rOLx

- 須搭配 CxxlMan 程式庫
- 可代理一般函數指標或成員函數指標,參數最多 10 個
- 對於有回傳值的的格式,只能 bind 一筆函數指標,若多次呼叫
  Bind(), 後者會取代前者,若無 bind,執行函數物件叫用(operator())將
  會 throw DelegateErr_NoBind
- 對於無回傳值的的格式,可以 bind 多筆函數指標資料,用 Bind() 會
  傳回一個 DelegateID,此 ID 可給 Unbind() 刪除用

以下是示範程式,

設計邊境

設計課程

https://www.youtube.com/playlist?list=PL8209C3B494AFF49C

我們有跟著宇宙一起膨脹嗎











2014年4月17日 星期四

簡單實作 boost::function 的主要功能

trace goost::function 真的像在走迷宮,它使用大量的 macro 層層相扣,但也只提供最多 10 個參數可以使用,若參數個數能無限制還情有可原,只為 10 個參數搞得這麼誇張,不如使用暴力法還來得簡單明瞭。

goost::function 其實也沒什麼,主要的關鍵在要怎麼把函數的 type 分離出來,比如 goost::function<char(float,int)> 中的 char(float,int) 是一個 type,要怎麼分離出 char、float 和 int 這三個 type?goost::function 是借用特製化 class 自動匹配 type 的技巧,以下用例子說明:

2014年4月6日 星期日

成員函數指標的奇異現象

這方法蠻特殊的,不知是否有實用的價值,很像為 Base 附加功能,不過的我寧願採用延伸介面的方法

 1 #include <iostream>
 2  
 3  using namespace std;
 4  
 5  class Base1
 6  {
 7  public:
 8    // Constructor
 9    Base1(){}
10    // Destructor
11    ~Base1(){}
12  };
13  
14  class Derived1:public Base1
15  {
16    int m_data;
17  public:
18    // Constructor
19    Derived1()
20    {
21      m_data = 0;
22    }

2014年4月3日 星期四

CxxlMan 程式庫源碼

先要有一套 svn 使用端的工具,比如 TortoiseSVN,Checkout URL 填入 http://cxxlman.googlecode.com/svn,即可取得源碼。其內不包含 Make,僅是作為參考、瞭解之用。

程式庫的取得和用法在 http://cxxlman.cxxl3d.tk/




2014年3月11日 星期二

走不出的樓梯

只有三種可能,1. 影片作假,配合一流的演員和一流的剪接。2. 他們在玩雙胞胎的把戲。 3. 那是一個奇幻空間,偉大的發現。

其他一些錯覺什麼的解釋都不可信