【问题标题】:C++ Template compilation errorC++ 模板编译错误
【发布时间】:2018-02-07 02:39:28
【问题描述】:

我是模板新手,在阅读了如何制作模板后我正在尝试对此进行测试,但我遇到了编译错误,我的代码看起来与我从中获取的示例完全相同。我创建了一个函数并且我有一个模板,但是当我编译它时出现以下错误:

15 20 C:\Users\Fire\Desktop\test.cpp [Error] 重载 'max(int, int)' 调用不明确

15 20 C:\Users\Fire\Desktop\test.cpp [注意] 候选人是:

7 3 C:\Users\Fire\Desktop\test.cpp [注意] T max(T, T) [with T = int]

代码如下:

#include <iostream>
using namespace std;

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

int main(){
    cout << max<int>(10, 40);
    return 0;
}

【问题讨论】:

标签: c++ templates


【解决方案1】:

std::max 是 C++ 中定义的函数。调用你的函数 myMax 或类似的东西,它应该可以工作

【讨论】:

    【解决方案2】:

    std::max 是 std 命名空间的一部分。您正在执行 using namespace std 并在没有 std 限定符的情况下解析所有功能。这意味着您的代码中有两个版本的max。你和namespace std。为了解决这个问题,never do using namespace std。

    【讨论】:

    • 谢谢我不知道!
    • @Shinji-san 如果这回答了您的问题,请将其标记为正确答案。
    猜你喜欢
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多