Паскаль. Переменные и массивы внутри классов? Доброго времени суток. Делаю морской бой, запоролся на определении уничтожения корабля. Имеется поле 10 на 10, имеется массив, хранящий кол-во живых палуб каждого корабля. Эти 2 массива приходится передавать в каждый метод класса в качестве аргументов, ибо передать в конструктор, и хранить их внутри класса не представляется возможным, значения массивов не меняются...... type test=class a:array[1..10, 1..10] of integer; b:array [1..10] of integer; constructor Create(a:array[1..10, 1..10] of integer; b:array [1..10] of integer); ... Не работает. Можно ли что-то подобное реализовать? Заранее спасибо
Здравствуйте! В Паскале нельзя передавать массивы, как аргументы конструктора или метода. Однако, вы можете передавать указатели на массивы и работать с ними внутри класса.
Например, в вашем случае, вы можете определить тип указателя на массив и передавать его в конструктор:
type PArray10x10 = ^array[1..10, 1..10] of integer; PArray10 = ^array[1..10] of integer; type test = class a: PArray10x10; b: PArray10; constructor Create(a: PArray10x10; b: PArray10); end; constructor test.Create(a: PArray10x10; b: PArray10); begin self.a := a; self.b := b; end; var arrA: array[1..10, 1..10] of integer; arrB: array[1..10] of integer; obj: test; begin // инициализация массивов arrA и arrB New(obj); obj.Create(@arrA, @arrB); // работа с объектом obj end.
Таким образом, вы сможете передать массивы в объект класса и работать с ними внутри конструктора и методов класса. Будьте внимательны с освобождением памяти после работы с указателями на массивы.
Здравствуйте! В Паскале нельзя передавать массивы, как аргументы конструктора или метода. Однако, вы можете передавать указатели на массивы и работать с ними внутри класса.
Например, в вашем случае, вы можете определить тип указателя на массив и передавать его в конструктор:
typePArray10x10 = ^array[1..10, 1..10] of integer;
PArray10 = ^array[1..10] of integer;
type
test = class
a: PArray10x10;
b: PArray10;
constructor Create(a: PArray10x10; b: PArray10);
end;
constructor test.Create(a: PArray10x10; b: PArray10);
begin
self.a := a;
self.b := b;
end;
var
arrA: array[1..10, 1..10] of integer;
arrB: array[1..10] of integer;
obj: test;
begin
// инициализация массивов arrA и arrB
New(obj);
obj.Create(@arrA, @arrB);
// работа с объектом obj
end.
Таким образом, вы сможете передать массивы в объект класса и работать с ними внутри конструктора и методов класса. Будьте внимательны с освобождением памяти после работы с указателями на массивы.