【发布时间】:2015-06-23 07:53:31
【问题描述】:
为什么代码会给出输出:bool?
有什么办法可以让const char* 匹配string 版本?
#include <string>
#include <iostream>
void func(bool)
{
std::cout << "bool" << std::endl;
}
void func(const std::string&)
{
std::cout << "string" << std::endl;
}
int main(int argc, char* argv[])
{
func("hello");
}
【问题讨论】:
-
func(std::string("hello")); -
没有明确构造
std::string的任何替代方案?我希望编译器给出一个模棱两可的警告,而不是匹配bool版本。 -
也许有一个编译器选项,但它会依赖于编译器 try -Wall on gcc
-
@prmottajr 我在 clang 上尝试了
-Wall,但没有显示警告。 -
您不会收到模棱两可的警告,因为调用并不模棱两可。
标签: c++ overloading