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. 那是一個奇幻空間,偉大的發現。

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







2014年2月19日 星期三

C++ 延伸介面也延伸實作

在 C++ 中若要增加一個介面類別的功能,就得從這個介面類別再延伸出一個新介面類別,在其中增加新功能,但這要實作可麻煩了,還得把舊介面所宣告的功能再寫一次,以下這範例的做法可省去這層麻煩,不過得有舊實作的原始碼才行。

注意對介面的繼承須加一個 virtual


 1 #include <iostream>
 2  
 3  using namespace std;
 4  
 5  // 介面
 6  class IBase
 7  {
 8  public:
 9    IBase(){}
10    virtual ~IBase(){}

2014年2月12日 星期三

WD WD10EZEX-08M2NA0 和 NVIDIA IDE SW 相衝

剛買了一顆 WD WD10EZEX-08M2NA0 硬碟,在 WinXP 下看不到,但用 WinXP 安裝光碟是看得到的,索性就把 WinXP 安裝到這顆硬碟,一開始一切正常,但安裝完一堆驅動程式後就開不了機了。

想說一個個找原因很麻煩,只好假設是儲存方面的驅動程式,重裝一次 WinXP,但沒裝 NVIDIA IDE SW,果然被我猜中。

為了進一步確認,一切裝好後,設好系統還原,再裝上 NVIDIA IDE SW,重開機後就進不了 WinXP 了,證明無誤。

只有 WinXP 的 NVIDIA IDE SW 有影響,在 Win7 無影響。





2014年2月4日 星期二

讓 KGS 落子有聲的 java 版本

在 KGS 下圍棋落子沒聲,經不斷嘗試,找到可讓 KGS 落子有聲的最新版本為

 Java SE Runtime Environment 6u31


先點 Accept License Agreement 再抓,註冊完就能抓取