我有两个返回值错误处理功能:
static void handleError(int error, const std::string& message, bool bShowAll = false);
和
static void handleError(int error, const std::string& prefix, const std::string& message, bool bShowAll = false)
对于我有问题的函数的调用如下所示:
handleError(errro, "moduleA", "query failed");
现在问题出现了,上面的调用导致调用第一个变量,而不是第二个变量,其传递参数bshowall解析为“true”。我的最佳猜测是“const char[]”与“bool”类型兼容。
我尝试过改变函数的顺序(使用第二个函数的forward声明),但这一点都没有帮助。C++还提供了其他解决方案吗?(在所有类型转换都不起作用-使用bool以外的其他类型,例如,一个枚举类型,其枚举符号等效于bool设计用于的类型,从而实现了良好的操作。我认为默认值参数init是为此打开大门的项,但MSVC 2012本身并没有提示这种模糊性,尽管我正在运行它,警告级别高达4。)
注意:我认为栈溢出是关于学习如何做好事、聪明的事情,也是为了向他人学习:了解如何在计算和计算机语言领域设计事物。