C++ template class内でtemplate medhodを定義する

2011/08/17
(2018/10/27 最終更新)
C++ 

大分初歩的なことではあると思うのですが、template classの中でtemplate methodを定義できるのかなぁと思ってやってみたら普通にできたのでメモしておきます。
ある変数の型からclassの型へ型変換を行い時なんかは結構使えるんじゃないかと思います。
void *でも様々な型の入力はできますが、データサイズがわからないと変換ができないのでtemplateを使う方が便利です。ライブラリ化などするときはソースはヘッダーに書かないといけないので、DLLなどに隠蔽できないという欠点はありますが。

サンプルコードを記しておきます。classのstoreメソッドに何らかの型の入力値を入れるとclassのメンバ変数の型Tへその値を変換して代入する例です。

Source Code


#include <stdio.h>

template<class T>
class C{
private:
    T m_value;

public:
    template<typename U>
    inline void store(U value){
        m_value = (T)value;
    }
    inline T get(){ return m_value; }
};

void main(){
    C<int> cl;
    double value = 12.5;
    cl.store<double>(value);
    printf("stored value: %d\n", cl.get());
}

Output


stored value: 12


  このエントリーをはてなブックマークに追加    

<<「ソフトウェア開発」の記事一覧に戻る

関連記事