スキップしてメイン コンテンツに移動

テンプレートの発見

テンプレート関数って

#include <stdio.h>

template <typename _T> void hoge(_T a)
{
printf("hoge template %d \n", a);
}


void hoge(double a)
{
printf("hoge double %f \n", a);
}

int main()
{
int i = 1;
double d = 2.0;
char c = 3;
hoge(i);
hoge(d);
hoge(c);

return 0;
}

実行結果

hoge template 1
hoge double 2.000000
hoge template 3

って具合に使えるみたい。
テンプレートの関数 VS. 型指定してる関数では、型指定してる関数がオーバーロードされちゃうんだ。

人気blogランキングへ にほんブログ村 IT技術ブログへ ブログランキング ドット ネット

コメント

このブログの人気の投稿

へーー

PHPで実行ファイルが出来ちゃうんだって。 今度、試してみよう。 そのうちに。。。

C++でプロパティ

こんなんの 出来るんだって。 C++で a.property = 0; int t = a.property; か。

LINK : warning LNK4098

VCで他のLibをリンクするとこんなメッセージが出る。 LINK : warning LNK4098: defaultlib "msvcrtd.lib" は他のライブラリの使用と競合しています; /NODEFAULTLIB:library を使用してください LINK : warning LNK4098: defaultlib "nafxcwd.lib" は他のライブラリの使用と競合しています; /NODEFAULTLIB:library を使用してください LINK : warning LNK4098: defaultlib "libcmtd.lib" は他のライブラリの使用と競合しています; /NODEFAULTLIB:library を使用してください よく、「スタティックライブラリでMFCを使用」と出ていたので、「共有DLLでMFCを使用」に変更していたが、ここでなぜ出るか少しだけ調べて見る。 ランタイムライブラリがVisualStdioでシングルスレッド、マルチスレッド(DLL)、マルチスレッドで3種類。デバッグ、リリース版で計6種類用意されている。 ちなみに、 MSVCRT.lib マルチスレッド(DLL) Release /MD(コンパイルオプション) MSVCRTd.lib マルチスレッド(DLL) Debug /MDd LIBCMT.lib マルチスレッド Release /MT LIBCMTd.lib マルチスレッド Debug /MTd LIBC.lib シングルスレッド Release /ML LIBCd.lib シングルスレッド Debug /MLd となっている。 コンパイラーオプションは、「プロジェクトの設定」→タブ「C/C++」→カテゴリ「コード生成」で確認できる。 ライブラリで作成したときにリンクしたランタイムライブラリと現在のアプリで使用しているランタイムで異なっているためにエラーが出ているようだ。 ライブラリのソースコードがあれば、コンパイルオプションをアプリと同じオプションに変え作成しなおせば直りそうです。しかし、ソースコードがなければ、ライブラリのオプションにアプリを合わせないとだめかぁ。。。しかし、アプリが「マルチスレッド」、...