隐式转换无效

时间:2014-12-06 21:25:10

标签: c++

我试图进行隐式转换,但它仅适用于一个参数,例如,如果我只留下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;
}

1 个答案:

答案 0 :(得分:1)

insertFoo()只接受一个参数,但你传递的是两个。您可以从支持的初始化列表初始化,如下所示:

bar.insertFoo( {100, std::string("")} );

这将创建一个带有参数Foo100的临时std::string("")

您也可以使用std::string

执行此操作
bar.insertFoo( {100, {}} );