【发布时间】:2021-10-28 12:22:50
【问题描述】:
我正在开发自己的库,我想创建函数 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;
}
如果我这样做了,请原谅语法错误。
【问题讨论】:
-
如果您包含错误消息会有所帮助。从外观上看,您的模板参数 T 被推导出为一个 int 数组,但您传回的是一个 int,这显然不一样。该问题与命名空间或函数名称无关。
-
有一个问题,我来自波兰,我使用的是波兰语版本的 Visual Studio,所以我不知道什么是英文翻译,我所能做的就是将它们复制到谷歌翻译或只发布错误代码
-
T 被推断为一个 int* 但您返回的是一个 int。
-
标准库函数
max在std中定义。
标签: c++ function namespaces