实例化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
相关产品推荐
相关产品推荐

