Паскаль. Переменные и массивы внутри классов? Доброго времени суток. Делаю морской бой, запоролся на определении уничтожения корабля.
Имеется поле 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
191 +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 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир