2005-06-26-03-奥の手を使うか - project-enigma

2005-06-26-03-奥の手を使うか

>> Site top >> weblog >> 月別アーカイブ >> 2005年06月のlog >> 2005-06-26-03-奥の手を使うか

最終更新日付:2014/01/02 00:00:00


奥の手を使うか

2005 年 06 月 26 日

OreCa for C++ で金額データの取得もサポートしたい。でも NSBasic 方式のデータベースにアクセスする実装をするなら包括的にサポートしたい。でも OreCa クラスでそれをやるのは設計上ヘンだ...というわけで、NSBasicDatabase クラスの登場である。

こいつは様々なバイト幅を持つデータを保存/取得できなければならん。ここで使用するのが奥の手。メンバ関数テンプレートである。

class NSBasicDatabase { 
public: 
    template<typename T> 
    bool GetValue( const char* key, T& ref ); 
 
    template<typename T> 
    bool SetValue( const char* key, const T& ref ); 
 
public: 
    // ... 
}; 

CodeWarrior のコンパイラはメンバ関数テンプレートをサポートしている。えらいぞCodeWarrior 。しかし、これでは文字列を保存できない。ポインタが指すアドレスやその値だけを保存してもしょうがないからだ。そこで、もう一段奥の手、メンバ関数テンプレートの明示的な特殊化が入る。

class NSBasicDatabase { 
public: 
    template<typename T> 
    bool GetValue( const char* key, T& ref ); 
 
    template<> 
    bool GetValue<char*>( const char* key, char*& ref ); 
 
    template<typename T> 
    bool SetValue( const char* key, const T& ref ); 
 
    template<> 
    bool SetValue<const char*>( const char* key, const char*& ref ); 
 
public: 
    // ... 
}; 

上記のコードはまだ試していない。さて、どこまで CodeWarrior は頑張ってくれるかな...?

 

コメント

このページにコメントする

 

このページのタグ

Page tag : Palm

 

 


Copyright(C) 2005-2017 project-enigma.
Generated by CL-PREFAB.