各位晚上好! 若有两个类 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 2019-06-12 22:05:01 +08:00 via iPhone
A::A(B & b)方法
|
2
noli 2019-06-12 22:33:14 +08:00
替一楼修改一下说法,
需要一个以 B 类型常引用作为参数的 A 的构造函数 A::A(const B& b) |
3
HHehr0ow 2019-06-12 23:23:52 +08:00
看编译器报错,缺啥补啥
|
4
zycpp 2019-06-13 09:17:25 +08:00 via iPhone
gcc7.3 下没问题,楼主贴下代码
|
5
PanPancf 2019-06-13 10:30:25 +08:00
A foo = bar 需要你提供一个 copy constructor
|
6
tkhmy 2019-06-13 10:42:39 +08:00 via Android
拷贝构造 不同于 赋值运算
|
7
LitostCheng 2019-06-13 11:13:30 +08:00
一个是拷贝构造函数,一个是复制函数,
6 楼 @tkhmy 正解 |