How to create a copy constructor (error: actual and formal argument lists differ in length)
How to create a copy constructor (error: actual and formal argument lists differ in length)
我在处理当前的作业时遇到了问题(在 Java 中完成)。
我得到了一个与抽象 class 和子 classes 相关的项目。但是,我坚持为它创建复制构造函数,因为我不断收到错误消息:实际参数列表和形式参数列表的长度不同。
在这里,arr 是抽象的 "super" class,其中仅定义了构造函数(如下所示)。构造函数具有对应于二维数组的行 (m) 和列 (n) 的参数。在 Board class(它扩展了 arr)中,我必须同时定义构造函数和复制构造函数。我已经使用 super(m,n) 定义了构造函数,但我无法定义复制构造函数(而且我不确定 subclass 构造函数在这里是否正确)。
在 class:
protected int a, b;
protected Arr (int height, int width) {
a = height;
b = width;
}
在板子中class:
public class Board extends Arr{
private int[][] space;
public Board (int a, int b){
super(a,b);
this.space = new int[a][b];
}
拷贝构造函数
public Board(Board X) {
board copy = new Board(a,b);
copy.space = X.space;
}
我在 "public board(board X) {" 行收到一个错误,因为我的参数似乎有误。但是,我不允许在这里更改参数。从我以前对此的研究中,我只知道复制构造函数复制参数对象,但我不能这样做,因为我不知道如何制作。
感谢您的帮助
您缺少 class 定义中的关键字 "class",首先:
public class board extends arr
你的复制构造函数不正确:
board copy = new board(a,b);
copy.data = X.data;
您所做的只是创建一个 different board
实例,它会立即被丢弃。您没有设置 this 实例的任何值。
你需要调用超级构造函数:
super(X.m, X.n);
Class 名字应该是 PascalCase
我在处理当前的作业时遇到了问题(在 Java 中完成)。 我得到了一个与抽象 class 和子 classes 相关的项目。但是,我坚持为它创建复制构造函数,因为我不断收到错误消息:实际参数列表和形式参数列表的长度不同。 在这里,arr 是抽象的 "super" class,其中仅定义了构造函数(如下所示)。构造函数具有对应于二维数组的行 (m) 和列 (n) 的参数。在 Board class(它扩展了 arr)中,我必须同时定义构造函数和复制构造函数。我已经使用 super(m,n) 定义了构造函数,但我无法定义复制构造函数(而且我不确定 subclass 构造函数在这里是否正确)。
在 class:
protected int a, b;
protected Arr (int height, int width) {
a = height;
b = width;
}
在板子中class:
public class Board extends Arr{
private int[][] space;
public Board (int a, int b){
super(a,b);
this.space = new int[a][b];
}
拷贝构造函数
public Board(Board X) {
board copy = new Board(a,b);
copy.space = X.space;
}
我在 "public board(board X) {" 行收到一个错误,因为我的参数似乎有误。但是,我不允许在这里更改参数。从我以前对此的研究中,我只知道复制构造函数复制参数对象,但我不能这样做,因为我不知道如何制作。 感谢您的帮助
您缺少 class 定义中的关键字 "class",首先:
public class board extends arr
你的复制构造函数不正确:
board copy = new board(a,b);
copy.data = X.data;
您所做的只是创建一个 different board
实例,它会立即被丢弃。您没有设置 this 实例的任何值。
你需要调用超级构造函数:
super(X.m, X.n);
Class 名字应该是 PascalCase