当前位置: 首页 > 知识库问答 >
问题:

递归构造函数调用?

羊城
2023-03-14
java prettyprint-override">public class RGBImage {

    private RGBColor[][] _image;

    public RGBImage(RGBColor[][] pixels) {
        _image = new RGBColor[pixels.length][pixels[0].length];
        for (int i = 0; i < _image.length; i++)
            for (int j = 0; j < _image[i].length; j++)
                _image[i][j] = new RGBColor(pixels[i][j]);
    }

    public RGBImage(RGBImage other) {
        this(new RGBImage(other._image));
    }

第二个构造函数应该调用第一个构造函数,但却给了我“递归构造函数调用”错误。
我明白这个错误的意思,只是不明白递归在哪里。第一个contructor将rgbcolor[][]作为参数,而other._image应该是该类型的数组。我错过了什么?

多谢了。

共有1个答案

孙子民
2023-03-14

第二个构造函数可能应该是这样的:

public RGBImage(RGBImage other) {
    this(other._image);
}

您的版本创建了另一个实例,该实例创建了另一个实例,以此类推。

 类似资料:
  • 我在程序的某个部分遇到了问题,我将一个充当lambda函数的对象传递给另一个函数(我需要捕获一个常量this指针,这样我就不能使用实际的lambda)。这导致调用lambda的copy构造函数,该构造函数再次调用copy构造函数,最终堆栈溢出。我知道发生了什么,但我不知道复制构造函数为什么调用自己,也不知道如何解决这个问题。我复制了下面的问题。 编译器:MSVC 2010

  • 问题内容: 我可以在变量中创建一个递归函数,如下所示: 这样,将输出 。假设我做了以下事情: 将输出 如上。如果我再更改如下: 然后将给出,如预期的那样。 现在给出 它所指的,而不是函数(它本身指向的)。在某些情况下这可能是理想的,但是有没有一种方法可以编写函数以便它调用自身而不是保存它的变量? 也就是说,是否可以 仅 更改线路,以便 在调用时仍能完成所有这些步骤?我试过了,但这给了我错误。 问题

  • 问题内容: 我有一个异步函数,要连续多次调用。问题是“多个”可以是几十万或数百万… 显而易见的方法是从回调中调用相同的函数,如下所示: 当然,涉及一些逻辑来停止递归。问题是堆栈是否充满了调用,并可能在某些时候导致堆栈溢出? 问题答案: 问题是堆栈是否充满了调用,并可能在某些时候导致堆栈溢出? 否。 如果调用回调是异步传递的,则不会堆积堆栈。 在您的代码中: 这是逐步发生的事情: 首先被称为。 然后

  • 我需要在树结构中递归调用函数。 下图是树结构的示例。 在此输入图像描述 在这里,我通过传递在for循环中调用python函数,这将在第一个循环中生成,在第二个循环中生成。 这里我需要为和运行相同的函数,所以这里将生成和,将生成,然后为运行相同的python函数,它将生成等等,我必须运行相同的函数,直到我得到null。 如何用python编写逻辑

  • 为什么下面没有编译: 如有需要,请提供更多详细信息: 我想将tmp传递给父构造函数

  • 问题 你想在一个函数中调用相同的函数。 解决方案 使用一个命名函数: ping = -> console.log "Pinged" setTimeout ping, 1000 若为未命名函数,则使用 @arguments.callee@: delay = 1000 setTimeout((-> console.log "Pinged" setTimeout arg