0

假设我有课程:

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”类型的临时对象

知道如何解决这个问题吗?或者至少有什么好的理由说明这可能是不好的做法?

我知道我可以轻松地为宽度和高度提供默认值来解决我的问题,但是我使用的是更简单的代码,在我的实际代码中,默认值没有任何意义,因为我想要定义的实际对象需要使用多输入构造函数。

那么有什么办法可以解决这个问题吗?

4

0 回答 0