我试图进行隐式转换,但它仅适用于一个参数,例如,如果我只留下unsigned int
,它就会起作用,否则它就不会。发生了什么事?
#include <iostream>
class Foo
{
public:
Foo(unsigned int, const std::string&) {}
};
class Bar
{
public:
void insertFoo(const Foo& foo)
{
}
};
int main(int argc, char ** argv)
{
Bar bar;
bar.insertFoo(100, std::string(""));
return 0;
}
答案 0 :(得分:1)
insertFoo()
只接受一个参数,但你传递的是两个。您可以从支持的初始化列表初始化,如下所示:
bar.insertFoo( {100, std::string("")} );
这将创建一个带有参数Foo
和100
的临时std::string("")
您也可以使用std::string
:
bar.insertFoo( {100, {}} );