Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.12.21;
Скачать: CL | DM;

Вниз

Predefine record   Найти похожие ветки 

 
@!!ex ©   (2008-11-10 17:00) [0]

Есть два рекорда:
TVector4f = record
 class operator Multiply(a:TVector4f; m:TMatrix4x4f):TVector4f;
end;

TMatrix4x4f = record
 class operator Multiply(m:TMatrix4x4f; v:TVector4f):TVector4f;
end;

Компилятор ругается на то, что тип TMatrix4x4f еще не определен, когда действует определение Вектора.
Если бы это были бы классы, то не проблема:

TMatrix4x4f = class;

TVector4f = record
 class operator Multiply(a:TVector4f; m:TMatrix4x4f):TVector4f;
end;

TMatrix4x4f = record
 class operator Multiply(m:TMatrix4x4f; v:TVector4f):TVector4f;
end;


С рекордами такое не работает. Что делать??


 
Palladin ©   (2008-11-10 17:08) [1]

использовать указатели на них


 
@!!ex ©   (2008-11-10 17:20) [2]

В операторах?
Неудачное решение..

m:TMatrix;
v:TVector;

v:=v*@m;

?

А что делать если функция будет?
function m:TMatrix;

v:=v*???

Вообще не юзабельно получается. :((


 
Palladin ©   (2008-11-10 17:26) [3]

нет
PVector4f=^TVector4f;
PMatrix4x4f=^TMatrix4x4f;

TVector4f = record
 class operator Multiply(a:PVector4f; m:PMatrix4x4f):PVector4f;
end;

TMatrix4x4f = record
 class operator Multiply(m:PMatrix4x4f; v:PVector4f):PVector4f;
end;

все юзабельно


 
@!!ex ©   (2008-11-10 17:28) [4]

> [3] Palladin ©   (10.11.08 17:26)

ну вот. теперь у меня есть две функции. GetVector и GetMatrix. Нужно перемножить их результаты.
var
 a:TVector;
begin
 a:=GetVector()*GetMatrix();
end;

Не работает.


 
Palladin ©   (2008-11-10 17:31) [5]

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


 
@!!ex ©   (2008-11-10 17:33) [6]

вот вот...
Нифига не могу решить что делать. :((


 
MBo ©   (2008-11-11 05:55) [7]

В некоторых случаях такой изврат может помочь:

 TDummy = record
   y: Integer;
 end;

 TA = record
   x: Integer;
   class operator Add(l: TDummy; r: TA): TA;
 end;

 TB = record
   y: Integer;
   class operator Add(l: TA; r: TB): TB;
   class operator Implicit(l: TB): TDummy;
 end;




Страницы: 1 вся ветка

Текущий архив: 2008.12.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
2-1226403905
IVAKA_27
2008-11-11 14:45
2008.12.21
нужен совет по TreeNode


3-1211879613
Dmitry_177
2008-05-27 13:13
2008.12.21
ADO API определить количество записей


15-1224050613
tesseract
2008-10-15 10:03
2008.12.21
lazarus подновился. исправлена куча ошибок,


2-1226321890
MegaVolt_old
2008-11-10 15:58
2008.12.21
Подскажите про работу с PWideChar.


6-1196865973
Sunshine
2007-12-05 17:46
2008.12.21
Indy киберплат и шифрование.