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++不会搜索任意长的转换序列。