gpt4 book ai didi

c++ - 以 const char* 作为参数的方法如何与以 const int& 为参数的方法接近匹配?

转载 作者:太空狗 更新时间:2023-10-29 23:05:29 24 4
gpt4 key购买 nike

以下代码在我编译时抛出编译器错误。

template <typename T>
inline T const& max (T const& a, T const& b)
{
return a < b ? b : a;
}

// maximum of two C-strings (call-by-value)
inline char const* max (char const* a, char const* b)
{
return strcmp(a,b) < 0 ? b : a;
}

// maximum of three values of any type (call-by-reference)
template <typename T>
inline T const& max (T const& a, T const& b, T const& c)
{
return max (max(a,b), c);
}

int main ()
{
::max(7, 42, 68);
}

编译时出现错误:

error: call of overloaded 'max(const int&, const int&)' is ambiguous

note: candidates are:

note: const T& max(const T&, const T&) [with T =int]

note: const char* max(const char*, const char*)

当我们有匹配调用的模板方法时,max(const char*, const char*) 如何成为 max(const int&, const int &) 的近似匹配?

最佳答案

我打赌你的代码中有 using namespace std。删除它,你会没事的。

比较:http://ideone.com/Csq8SVhttp://ideone.com/IQAoI6

如果你确实需要使用命名空间标准,你可以强制调用根命名空间(在 main() 中执行):

template <typename T>
inline T const& max (T const& a, T const& b, T const& c)
{
return ::max(::max(a,b), c);
}

关于c++ - 以 const char* 作为参数的方法如何与以 const int& 为参数的方法接近匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19216263/

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