在处理中获取构造函数错误

时间:2013-05-11 14:04:30

标签: constructor undefined processing

我正在玩有些日子的处理,但我遇到了一个我不理解的错误。我用适当的参数声明了类和构造函数,也许你可以帮助我。这是代码:

Cell[][] grid;
int rnc = 5;
int side = 5;
void setup(){
  size(rnc*side,rnc*side);
  grid = new Cell[rnc][rnc];
  for(int i = 0; i < rnc; i++){
    for(int j = 0; j < rnc; j++){
      grid[i][j] = new Cell(i,j);
      rect(grid[i][j].row*side,grid[i][j].column*side,side,side);
    }
  }
}
void draw(){}
class Cell
{
  boolean isChecked;
  int row,column;
  int side;
  void Cell(int trow, int tcolumn){
    row=trow;
    column=tcolumn;
}
  void toggleCheck(){
    if(isChecked == true){
      isChecked = false;
    }else{
      isChecked = true;
    }
  }
}

我尝试运行程序后得到的错误是:构造函数sketch.Cell(int,int)未定义。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

我假设这是Java,尽管你没有指定语言。如果是这样,这就是问题所在:

void Cell(int trow, int tcolumn){
    row=trow;
    column=tcolumn;
}

那不是构造函数。这是一个名为Cell的方法,其返回类型为void。你的意思是:

Cell(int trow, int tcolumn){
    row=trow;
    column=tcolumn;
}

(或可能是public Cell(...)。)

那时候,你应该没问题。请注意,这可能是编译时错误 - 而不是执行时错误。在编译之前不要尝试运行代码。

此外,还不清楚为什么你已经制作了构造函数参数trowtcolumn - t意味着什么?我还会将您的变量设为私有,如果可能,还会final,并简化您的toggleCheck方法。例如:

public final class Cell {

    private final int row, column;
    private boolean checked;
    // It's not clear what side was for

    public Cell(int row, int column) {
        this.row = row;
        this.column = column;
    }

    public void toggleChecked() {
        checked = !checked;
    }

    public boolean isChecked() {
        return checked;
    }
}