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

时间:2015-04-29 23:50:40

标签: c++ long-integer unsigned size-t

我定义了一个函数:

void myfunc(size_t param1, size_t param2){
...
}

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

void myfunc(unsigned long param1, unsigned long param2){
...
}

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

如果没有staic_cast输入参数size_t?

,如何解决这个问题

谢谢!

1 个答案:

答案 0 :(得分:3)

听起来像size_t和unsigned long在你的系统上是相同的类型;编译器抱怨你有两个相同的功能。此外,使用多个数字类型进行重载通常是一个坏主意,因为编译器可能无法识别由于投射可能性而导致的过载。请尝试使用模板:

template <T>
void myfunc(T param1, T param2){
...
}