我用的delphi 5.0,类定义如下
type
TMyTest = class
public
m_Value : integer;
public
constructor Init(value : integer);
end;
PMyTest = ^TMyTest;
var
ptest : PMyTest;
implementation
{$R *.DFM}
constructor TMyTest.Init(value : integer);
begin
m_Value := value;
end;
然后在使用的时候
New(ptest);
ptest^.Init(123);
问题如下
1、第二行一旦执行就崩溃,刚开始使用Delphi,与C++语法不同,所以请帮忙解决一下,不胜感激!
2、好多书上说可以ptest := New(PMyTest, Init(123));可是这句话编译不过,是不是delphi版本太低(我得5.0)还是我写错了
type
TMyTest = class
public
m_Value : integer;
public
constructor Init(value : integer);
end;
PMyTest = ^TMyTest;
var
ptest : PMyTest;
implementation
{$R *.DFM}
constructor TMyTest.Init(value : integer);
begin
m_Value := value;
end;
然后在使用的时候
New(ptest);
ptest^.Init(123);
问题如下
1、第二行一旦执行就崩溃,刚开始使用Delphi,与C++语法不同,所以请帮忙解决一下,不胜感激!
2、好多书上说可以ptest := New(PMyTest, Init(123));可是这句话编译不过,是不是delphi版本太低(我得5.0)还是我写错了
var
PTest : PMyTest;
begin
new(pTest);
pTest^ := TMyTest.Init(10);
ShowMessage(IntToStr(pTest^.m_Value));
pTest^.Free;
Dispose(pTest);
end;procedure TForm1.Button2Click(Sender: TObject);
var
MyTest : TMyTest;
begin
MyTest := TMyTest.Init(11);
ShowMessage(IntToStr(MyTest.m_Value));
MyTest.Free;
end;
//
//楼主可能是把C++与Delphi的语法混淆了。
//Delphi中MyTest是一个指针,即使不用new
//new在Delphi里是分配一块内存,但不会将对像进行构造
//比较乱,希望能明白
在 delphi 中,类的构造函数是需要显式调用的,
不象 c++ 中,new 一个对象指针就自动调用了构造函数了。
这是绝大多数用惯 c++ 的人初用 delphi 时一定要会犯的一个错误。