C++でテンプレートクラスを作成した際に,
voidのメンバ関数にもクラスのテンプレートを反映させる(?)方法がわかりません.
例えば,以下のようにtest.hppにプロトタイプ宣言されていて:
c++
1template<typename T, typename U> 2class hoge{ 3 public: 4 T num 5 U value 6 7 void input_data(char* filename) 8}
hoge.cppにて以下のようにメンバ関数を作って呼び出した場合,
"定義されていない参照です"というエラーが出ます
c++
1template<typename T, typename U> 2void hoge::input_data(char* filename){ 3 //..略.. 4 //templaeteで指定された型でファイルからデータを読み込む 5 //..略.. 6} 7 8int main{ 9 filename="a.txt" 10 class hoge<double, int> A; 11 hoge.input<double, int>(filename) 12}
inputではfprintfなどを行うフォーマット指定子がif文で区切られていて,引数や返り値には使わないのですが,クラスを宣言した時点で型を切り替えたいです.
できればmainのhogeクラスの生成時以降は<double, int>を書きたくないのですが,なにかいい方法はないでしょうか.
どなたか教えていただけたら幸いです.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/17 16:47
2018/07/17 16:53
2018/07/17 16:55