unsigned long vs size_t导致函数重载失败

Har*_*ent 5 c++ unsigned size-t long-integer

我定义了一个函数:

void myfunc(size_t param1, size_t param2){
...
}
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是当我尝试重载此功能时

void myfunc(unsigned long param1, unsigned long param2){
...
}
Run Code Online (Sandbox Code Playgroud)

它无法使用以下消息进行编译:错误:myfunc(unsigned long param1,unsigned long param2)无法重载.

如果没有staic_cast输入参数size_t,我该如何解决这个问题?

谢谢!

sab*_*ser 3

听起来 size_t 和 unsigned long 在您的系统上是相同的类型;编译器抱怨你有两个相同的函数。此外,使用多种数字类型重载通常是一个坏主意,因为由于转换的可能性,编译器可能无法识别您想要的重载。尝试使用模板代替:

template <T>
void myfunc(T param1, T param2){
...
}
Run Code Online (Sandbox Code Playgroud)