Pie*_*tro 3 c++ string constructor boolean
在您看来,将调用哪个构造函数?
class Element {
public:
Element(bool b = true, bool c = true);
Element(const std::string s, bool b = true, bool c = true);
};
...
Element element("something", true);
Run Code Online (Sandbox Code Playgroud)
错误!第一个.
我是否必须从头开始重新启动Stroustrup的书?
我试过没有const,但没有任何改变.
看起来char*看起来更像是bool而不是std :: string.
有了这段代码,一切都很好:
Element element(string("something"), true);
Run Code Online (Sandbox Code Playgroud)
编译器:Microsoft Visual C++ 2010
操作系统:Windows 7
有一个从指针类型到内置的转换bool,非空指针被转换为true和空指针值false.
std::string是一个用户定义的类型(在字用户的最宽松的意义上),从而从转换const char*到std::string在内置的将不被优选的const char*,以bool转换.你必须做这样的事情(或添加一个需要a的重载const char *).
Element element( std::string("something"), true);
Run Code Online (Sandbox Code Playgroud)