gpt4 book ai didi

c++ - C++ 模板函数的重载错误

转载 作者:太空宇宙 更新时间:2023-11-04 15:57:38 26 4
gpt4 key购买 nike

我正在尝试使用函数模板进行一些练习,如下例所示:

#include <iostream>
using namespace std;

template <class T>
T max(T a, T b)
{
return a > b ? a : b;
}

int main()
{
cout << "max(10, 15) = " << max(10, 15) << endl;

retun 0;

}

但是我得到了以下错误。有人能认出问题出在哪里吗?

..\src\main.cpp:59:40: error: call of overloaded 'max(int, int)' is   
ambiguous
cout << "max(10, 15) = " << max(10, 15) << endl;
^
..\src\main.cpp:16:3: note: candidate: 'T max(T, T) [with T = int]'
T max(T a, T b)
^~~
In file included from c:\mingw\include\c++\8.1.0\bits\char_traits.h:39,
from c:\mingw\include\c++\8.1.0\ios:40,
from c:\mingw\include\c++\8.1.0\ostream:38,
from c:\mingw\include\c++\8.1.0\iostream:39,
from ..\src\main.cpp:9:
c:\mingw\include\c++\8.1.0\bits\stl_algobase.h:219:5: note:
candidate: 'constexpr const _Tp& std::max(const _Tp&, const _Tp&)
[with _Tp = int]'
max(const _Tp& __a, const _Tp& __b)

对不起,我是模板的新手。感谢您的帮助。

最佳答案

您对模板的使用是正确的,但是编译器提示说已经有一个名为 max 的函数具有相同的参数。

它的全名是 std::max,但是因为你写了 using namespace std 它只是 max 并且编译器无法知道哪个函数打电话。

解决方案是不使用using,参见Why is "using namespace std" considered bad practice? .

关于c++ - C++ 模板函数的重载错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53241988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com