Паскаль. Переменные и массивы внутри классов? Доброго времени суток. Делаю морской бой, запоролся на определении уничтожения корабля.
Имеется поле 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);
...
Не работает. Можно ли что-то подобное реализовать? Заранее спасибо

21 Авг 2019 в 07:03
215 +1
0
Ответы
1

Здравствуйте! В Паскале нельзя передавать массивы, как аргументы конструктора или метода. Однако, вы можете передавать указатели на массивы и работать с ними внутри класса.

Например, в вашем случае, вы можете определить тип указателя на массив и передавать его в конструктор:

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.

Таким образом, вы сможете передать массивы в объект класса и работать с ними внутри конструктора и методов класса. Будьте внимательны с освобождением памяти после работы с указателями на массивы.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир