c++テンプレート関数名
#include <iostream>
#include <string>
using namespace std;
template <class T>
T maxdt std(T a,T b){
if (a>b) return a;else return b;
}
int main (){
int id1,id2,n1 = 1000,n2 = 2000;
double ddt;
string sdt,s1 = "abcd",s2 = "jklm";
id1 = maxdt(n1,n2);
id2 = maxdt(3000,4000);
ddt =maxdt (55.55,66.66);
sdt = maxdt(s1,s2);
cout << "id1" << id1 <<endl;
cout << "id2" << id2 <<endl;
cout << "ddt" << ddt <<endl;
cout << "sdt" << sdt <<endl;
return 0;
}
というプログラムが例題であり、僕は横着をしてmaxdtをmaxという名前としてプログラムを作ったところ、
オーバーロード関数の呼び出しがあいまいです。
というエラーが表示されコンパイルできませんでした。
環境はubuntu 12.04,gcc 4.6.3 g++でコンパイルしました。
ググってもテンプレート関数の名前の付け方に規則は存在していないようなのですが、
これは直前に作ったプログラムの影響でしょうか?(maxという関数を作っていたので)
それとも別の規則が存在したりするのでしょうか?
お礼
ありがとうございます。 #include <iostream.h> #define mkr(a,b) {cout << a;\ cout << b;\ } void main(void){ cout << "2数を表示するマクロ" << endl; mkr(1,9); } というのが正しかったのですね。 改行のために \ を用意したのに、改行されてなかったということで エラーになっていたということが分かりました。