こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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という関数を作っていたので)
それとも別の規則が存在したりするのでしょうか?

投稿日時 - 2013-05-13 00:15:01

QNo.8085300

すぐに回答ほしいです

質問者が選んだベストアンサー

std::maxとの曖昧さが解決できないのでしょう。

投稿日時 - 2013-05-13 00:31:25

お礼

ありがとうございます。
maxって使ったらいけない名前なんですね。
正直関数のライブラリとかはまだ理解できないので、安全策で行きます。

投稿日時 - 2013-05-13 01:14:38

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)