各位晚上好! 若有两个类 A,B,A 中实现了通过 B 来构造 A 的构造方法,那么
B bar;
A foo(bar);
成立.然后又在 A 中重载=运算符,使得下面成立:
B bar;
A foo;
foo = bar;
现在我直接赋值初始化就出错(请教一下原因):
B bar;
A foo = bar;//显示没有这种转换形式
如果想要像上面这样初始化 A 类,我还需要做什么吗?
各位晚上好! 若有两个类 A,B,A 中实现了通过 B 来构造 A 的构造方法,那么
B bar;
A foo(bar);
成立.然后又在 A 中重载=运算符,使得下面成立:
B bar;
A foo;
foo = bar;
现在我直接赋值初始化就出错(请教一下原因):
B bar;
A foo = bar;//显示没有这种转换形式
如果想要像上面这样初始化 A 类,我还需要做什么吗?
1
elfive Jun 12, 2019 via iPhone
A::A(B & b)方法
|
2
noli Jun 12, 2019
替一楼修改一下说法,
需要一个以 B 类型常引用作为参数的 A 的构造函数 A::A(const B& b) |
3
HHehr0ow Jun 12, 2019
看编译器报错,缺啥补啥
|
4
zycpp Jun 13, 2019 via iPhone
gcc7.3 下没问题,楼主贴下代码
|
5
PanPancf Jun 13, 2019
A foo = bar 需要你提供一个 copy constructor
|
6
tkhmy Jun 13, 2019 via Android
拷贝构造 不同于 赋值运算
|
7
LitostCheng Jun 13, 2019
一个是拷贝构造函数,一个是复制函数,
6 楼 @tkhmy 正解 |