c++ - 模板函数如何获取 int 或 char 的最大值

标签 c++

#include <iostream>
using namespace std;

template <class MyType>
MyType GetMax (MyType a, MyType b, MyType c) {
  return std::max(std::max(a, b), c);
}

int main () {
  int a = 5, b = 6, c = 7, d;
  char e [] = "1", f [] = "2", g [] = "3", h; 
  d=GetMax<int>(a,b,c);
  cout << d << endl;
}

错误:没有匹配的函数可用于调用“GetMax(char [2], char [2], char [2])”

该程序在 int 上运行良好,但我不确定 char 的问题是什么

最佳答案

您正在声明 C 风格的字符串,也不是 char

如果您想将 GetMaxchar 一起使用,您的代码应如下所示:

 char e = '1', f = '2', g = '3', h; 
 h = GetMax<char>(e, f, g);

请注意,在这种特殊情况下,编译器可以确定 GetMax 的签名,因此您可以将调用减少为:

 h = GetMax(e, f, g);

关于c++ - 模板函数如何获取 int 或 char 的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19038760/

相关文章:

c++ - Qt QTreeView 添加到模型时不更新

c++ - 有没有办法在同一项目的另一个 .cpp 中使用 .cpp 中声明的静态 void

C++如何存储模板对象的集合而不考虑模板

c++ - gcc 未给出 Clang 错误 "attempted to construct a reference element in a tuple with an rvalue"

c++ - Visual Studio C++ 2010 错误 LNK2019 : unresolved external symbol

c++ - 在 C++ 项目中包含数据库文件时出错

c++ - clang++ 直接将字符串序列化到二进制文件就可以了吗?

c++ - 如何忽略输入末尾的空行

c++ - 从集合 vector 中删除集合

c++ - C++中的 block 是什么?