3

このコードの問題は何ですか?

#include <iostream>
using namespace std;

template <typename T>
T max(T X, T Y)
{
    return (X > Y) ? X : Y;
}

int main()
{
    int x = max(5,6);
}

このエラーが発生しています:

overload.C: In function 'int main()':
overload.C:19: error: call of overloaded 'max(int, int)' is ambiguous
overload.C:12: note: candidates are: T max(T, T) [with T = int]
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2  /bits/stl_algobase.h:206: note:                 const _Tp& std::max(const _Tp&, const _Tp&) [with _Tp = int]
4

2 に答える 2

12

maxはすでに標準ライブラリで定義されています。削除するusing namespace stdと機能するはずです。

于 2012-04-18T09:32:33.040 に答える
0

おそらくmax、標準ライブラリによってすでに宣言されています。名前空間をインポートしないようにしてください。

于 2012-04-18T09:34:57.143 に答える