我有如下基本类:
XXX
然后创建对象:
Type
Test = class
end;
TestIpl = class (Test)
end
现在,我想将此对象传递给BeginThread,它像这样:
obj = TestIpl.Create();
在方法:mtd中,我想使用创建的对象,因此我将其转换为:
BeginThread(nil, 0, @mtd, obj, 0, Threadinfo.ThreadId);
我正确地执行了此操作,但是更重要的是。可以这样吗? 我担心将指针投射到其原始对象的那一行。这样行吗?
当前,当我想在testIpl中使用重载方法时得到AV。 谢谢
编辑
var
obj: Test;
begin
obj := Test(DataParameter);
测试案例
function mtd(DataParameter: Pointer): DWORD; stdcall;
答案 0 :(得分:3)
声明您的线程例程与TThreadFunc
兼容(BeginThread
要求):
function mtd(Parameter: Pointer): Integer;
或者,如果您始终向其传递Test
的后代,则可以这样简单地声明它:
function mtd(Obj: Test): Integer;