Как привести ссылочную переменную к экземляру класса..

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Как привести ссылочную переменную к экземляру класса..

Сообщение beria » 31.08.2022 05:44:34

То есть типа...
Код: Выделить всё
type
  class1 = class(TObject)
    procedure test;
  end;

var
  c1: class1;
  p : pointer; //или p: TObject;
begin
  c1 := class1.Create;
  p := c1;
// и как-то  вызвать p.test;
         

Помню на С++ я такое делал, а как на FPC? Никто не в курсе ибо подобное очень сокращает код...
Аватара пользователя
beria
постоялец
 
Сообщения: 130
Зарегистрирован: 29.09.2016 08:57:13

Re: Как привести ссылочную переменную к экземляру класса..

Сообщение Дож » 31.08.2022 06:12:04

Код: Выделить всё
class1(p).test;
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Как привести ссылочную переменную к экземляру класса..

Сообщение beria » 31.08.2022 14:46:23

Дож писал(а):
Код: Выделить всё
class1(p).test;

Действительно элементарно. Спасибо. А я там уже стал заморачиваться определением адреса через прямое обращение к VMT)))))))
Аватара пользователя
beria
постоялец
 
Сообщения: 130
Зарегистрирован: 29.09.2016 08:57:13

Re: Как привести ссылочную переменную к экземляру класса..

Сообщение Sharfik » 31.08.2022 16:12:18

На всякий случай. Разные обороты с классами.

Код: Выделить всё
Tclass1 = class(TObject);
Tclass2 = class(Tclass1);

var
Tmp:TClass1;

Tclass2(Tmp).GoGo; // если процедура только в втором классе.

(Sender as Tclass2).GoGo; //

if Sende.ClassName='TClass2' then
(Sender as Tclass2).GoGo;

Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 763
Зарегистрирован: 20.07.2013 01:04:30


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35

Рейтинг@Mail.ru