alias для методов класса

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

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

Ответить
trifon
постоялец
Сообщения: 135
Зарегистрирован: 24.12.2006 11:08:35

alias для методов класса

Сообщение trifon »

Возможно ли использование alias для методов класса.
Есть unit содержащий код.

Код: Выделить всё

type
   TVector3 = class
.........
   public
.........
      procedure multiply( const arg : TFloat ); alias : 'mult';
      procedure divide( const arg : TFloat ); alias : 'div';
.........
end;


собирается без ошибок и предуприждений.

При попытке вызова alias

Код: Выделить всё

v[i].mult( 10 );
v[i].div( 10 );


вызывает ошибку компиляции

test3.pp(32,15) Error: identifier idents no member "mult"
test3.pp(32,19) Error: Illegal expression
test3.pp(32,19) Fatal: Syntax error, ";" expected but "(" found
test3.pp(32,19) Fatal: Compilation aborted


нормальный вызов ошибок не вызывает

Код: Выделить всё

v[i].multiply( 10 );
v[i].divide( 10 );


может кто нибудь подскажет в чём проблема?
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

alias создает идентификатор видимый в ассемблере, в обычном Pascal-коде он не видим.
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Попробуй так:

Код: Выделить всё

type
   TVector3 = class
.........
   public
.........
      procedure multiply( const arg : TFloat ); alias : '_mult';
      procedure divide( const arg : TFloat ); alias : '_div';
     
      procedure mult( const arg : TFloat );
      procedure div( const arg : TFloat );
.........
end;

.........

procedure TVector3.mult( const arg : TFloat ); external name '_mult';
procedure TVector3.div( const arg : TFloat ); external name '_div';
Ответить