You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实例化Toppings类时提示「构造函数不存在」的问题咨询

解决“Toppings构造函数不存在”的报错

错误原因

你自定义的Toppings类仅提供了接收3个int类型参数的构造函数,但实例化时调用的是无参的new Toppings()。在Java/Processing中,当你自定义了构造函数后,系统默认的无参构造函数会被自动覆盖,因此编译器找不到匹配的无参构造,抛出该错误。

解决方案

有两种可行的修复方式,根据你的需求选择:

方案1:实例化时传入对应参数

直接在setup()中调用带参构造函数,传入配料的初始位置和大小:

Toppings obj;

void setup() {
  size(1000,1000);
  obj = new Toppings(500, 500, 100); // 传入x、y、d的初始值
}

方案2:添加无参构造函数

在Toppings类中补充一个无参构造函数,同时为成员变量设置默认值,这样既保留原有带参构造的功能,也支持无参实例化:

class Toppings
{
  int x, y, d;

  // 无参构造函数,设置默认值
  Toppings() {
    this.x = 500;
    this.y = 500;
    this.d = 100;
  }

  // 原有带参构造函数
  Toppings(int x, int y, int d)
  {
    this.x = x;
    this.y = y;
    this.d = d;
  }

  void update()
  {
    if ( dist(mouseX, mouseY, x, y) < d/2) {
      if (mousePressed) {
        x = mouseX;
        y = mouseY;
      }
    }
    fill(150, 0, 0); // 移到ellipse前,确保颜色生效
    ellipse(x, y, d, d);
  }
}

额外优化提示

你的update()方法中,fill()语句放在ellipse()之后会导致填充颜色不生效,Processing的绘制逻辑是先设置样式再执行绘制操作,建议调整顺序(如上面代码所示)。

内容的提问来源于stack exchange,提问作者Marshall James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 10:25:15