为BUG编程:函数重载的烦恼 char *匹配bool而不是string

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。


这是一个BUG。

运行环境为linux x64 g++,Ubuntu18。

定义了几个同名函数:

cpp 复制代码
bool SetColFormInput(char const* colname, long size, bool _hidden = false)
bool SetColFormInput(long col, long size, bool _hidden = false)

bool SetColFormInput(long col, long size, string options, bool _hidden = false)

前两个是以前就有的,用起来没什么问题。第三个是新加的,在第二个基础上增加一个参数,因为带有默认值的必须放在最后嘛,所以新参数是倒数第二个。

调用的时候这样用:

cpp 复制代码
table.SetColFormInput2(table.AddCol("dataType"), 16, "float uint boolean string ushort");

第一个参数是long没什么问题,新增加的参数是字符串嘛,显然也没什么问题。

然而,程序调用的却是第二个函数,也就是说,bool比string更接近char const *啊!

没办法,只好把第三个函数改名解决。


不过话说回来,使用同名函数和参数默认值都是应该尽量避免的行为,虽然方便却会带来潜在的麻烦。比如这次。

(这里是结束)

相关推荐
石头wang20 小时前
onenote千年老bug,字体bug (calibri&微软雅黑) 的解决
microsoft·bug·onenote
林林要一直努力3 天前
AOSP Settings模块问题初窥
android·学习·bug·android studio
福大大架构师每日一题5 天前
redis 8.0.3版本更新详解:安全修复、新特性与关键bug修复全面解析
redis·安全·bug
杨小扩7 天前
特别放送:关于一个无法修复的系统级Bug
程序人生·bug
千帐灯无此声7 天前
Linux 测开:日志分析 + 定位 Bug
linux·c语言·c++·bug
紫璨月10 天前
rabbitMQ读取不到ThreadLocal消息的bug
rabbitmq·bug·java-rabbitmq
zzc92111 天前
Adobe Illustrator设置的颜色和显示的颜色不对应问题
adobe·bug·illustrator·错误·配色·透明度·底色
开-悟13 天前
嵌入式编程-使用AI查找BUG的启发
c语言·人工智能·嵌入式硬件·bug
一入JAVA毁终身13 天前
Data的时区格式BUG
bug
一入JAVA毁终身15 天前
处理Lombok的一个小BUG
java·开发语言·bug