ロゴ メインコンテンツへ
RSSフィード
「ソフトウェア開発」に関連する記事一覧

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

2011/08/17
(2018/10/27 最終更新)
(この記事の文字数: 343)
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


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

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

<<「ソフトウェア開発」の次の記事

コメント(0 件)



コンテンツロード: 0.0072 sec
Copyright(C)2006-2024 puarts All Rights Reserved