在C++C++函数过载暧昧
void foo(int i)
{ std::cout<<"int"<<std::endl; }
void foo(float i)
{ std::cout<<"float"<<std::endl; }
void foo(void *i)
{ std::cout<<"void *"<<std::endl; }
void foo(bool b)
{ std::cout<<"bool"<<std::endl; }
void main() { foo(0); }
编译此时,它使错误。
在2008年的视觉工作室,误差为C2668:“功能”:不明确调用重载函数
我知道为什么这个问题会发生,我知道一个解决方案,使用时间类型转换。但我认为这不是一个好的解决方案,因为使用这种方法可以消除函数重载的词法。
在我的项目中,我做了一个词汇对象,将自动类型更改为int,float,std :: basic_string和函数指针。超载所有类型转换运算符和创建者。但是当我输入'NULL'时,会出现错误C2668。
其实它几乎没有问题。唯一严重的问题是使用FALSE时。我的项目是核心库,所以我不能指导每个最终客户端程序员。
谁知道解决这个问题的技巧或提示更聪明的方法?
这个编译好gcc 4.5。 – mfontanini
如果这是你的真实代码,那么报告一个编译器错误 –