如何创建和调用与其他函数同名的函数?



我正在自己的库中工作,我想创建函数max()。我知道像这样的函数存在于c++中,它不在命名空间std中,所以使用命名空间std删除;不会有帮助。我在我的命名空间中创建这个函数,如下所示:

namespace ml
{
template<typename T>T max(T cntr, int size)//I'm getting errors here
{
sort(cntr,0,size-1);//my function which just sorts elements, it's working fine
return cntr[size-1];
}
}
下面是我的主要函数:
#include <iostream>
#include <ctime>
#include "mylib.hpp"
int main()
{
srand(time(NULL));
int* arr, n;
std::cin>>n;
arr = new int [n];
for(int i = 0; i < n; i++)
{
arr[i] = rand()%100;
}
int maximum = ml::max(arr,n);//I'm getting errors here
std::cout<<maximum<<'n';
return 0;
}

抱歉语法错误,如果我这样做了。

如果函数的目的是搜索c风格的数组,那么签名应该是template <typename T> T max(T* cntr, int size)。(注意T*cntr的类型)这样,当它与int*一起调用时,T被推断为int,这是正确的返回类型。

相关内容

最新更新