C++ 如何在C+中对2个类进行隐式转换构造函数调用+;?

C++ 如何在C+中对2个类进行隐式转换构造函数调用+;?,c++,c++11,constructor,implicit-conversion,C++,C++11,Constructor,Implicit Conversion,以下是测试代码: class A { public: A(const int& i){} }; class B { public: B(const A& a) {}; }; int main() { B b = 1; return 0; } 出现错误:“从int到B没有可行的转换” 显然,int可以通过转换为A而转换为B。但是,C++似乎没有搜索继承器的继承树。p> 请注意,B不是从A继承的 有没有办法不手动为B添加int构造函数就可以

以下是测试代码:

class A 
{
public:
    A(const int& i){}
};

class B
{
public:
    B(const A& a) {};
};


int main() 
{
    B b = 1;
    return 0;
}
出现错误:
“从int到B没有可行的转换”

显然,
int
可以通过转换为
A
而转换为
B
。但是,C++似乎没有搜索继承器的继承树。p> 请注意,B不是从A继承的


有没有办法不手动为B添加
int
构造函数就可以做到这一点呢?

@Danh这太神奇了。这是怎么发生的?直接初始化将调用构造函数,如果没有找到匹配项,它将尝试找到最多1个隐式转换
bb={1}应该可以工作,tooC++不会搜索任意长的转换序列。