假设我有课程:
class Rect {
int w, l;
Rect(width, length) : w(width), l(length) {}
}
class Box {
Rect &r; int h;
Box(int width, int length, int height);
}
为了论证,我不提供宽度和高度的默认值。主要是因为这是作为我实际所做工作的简化示例。
有什么地方可以使用多个参数的构造函数Rect(width,height)
来显式初始化Rect &r
?我知道如果构造函数只有一个参数我会做什么,我会简单地去:
Box(int width, int length, int height) : r(loneArgument), h(height)
但是现在,我需要使用多个参数显式初始化。然而:
Box(int width, int length, int height) : r(width, height), h(height)
导致编译器错误。当我们在做的时候,也是如此
Box(int width, int length, int height) : r(Rect(width, height)), h(height)
有错误
错误:对“Rect”类型的非 const 左值引用无法绑定到“Rect”类型的临时对象
知道如何解决这个问题吗?或者至少有什么好的理由说明这可能是不好的做法?
我知道我可以轻松地为宽度和高度提供默认值来解决我的问题,但是我使用的是更简单的代码,在我的实际代码中,默认值没有任何意义,因为我想要定义的实际对象需要使用多输入构造函数。
那么有什么办法可以解决这个问题吗?