Я пытаюсь сделать неявное преобразование и работает только с одним аргументом, например, если я оставлю только 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;
}
insertFoo()
принимает один аргумент, но вы передаете ему два. Вы можете инициализировать из скопированного списка инициализаторов следующим образом:
bar.insertFoo( {100, std::string("")} );
Это создаст временное Foo
с аргументами 100
и std::string("")
Вы также можете сделать это с помощью std::string
:
bar.insertFoo( {100, {}} );
foo
, то вам нужен braced-init-list,bar.insertFoo( { 100, std::string("") } );