这是我的问题 - 很快:
var c1:TClass1;
c2:TClass2;
begin
c1 := c1.Create;
c2 := c2.Create; //<<Exception;
end;
这两个类都继承自TObject。如果它们没有继承,那么我就不能在类中使用调试器,所以我必须使用TObject。
我真正的问题是我必须在第一个类的实例中的函数内创建第二个类的实例。我在里面找不到释放第一个类的实例的方法
似乎我不能拥有多个从TObject继承的类,那是问题吗?
如何修复我的代码,任何建议?
提前致谢!
答案 0 :(得分:16)
正确的语法应该是:
C1 := TClass1.Create;
C2 := TClass2.Create;
答案 1 :(得分:4)
扩展skamradt的答案:
您在创建类之前尝试使用它们。在内部,类是指向类中数据的指针。因此,您将取消引用未分配的指针。难道你的代码出现了繁荣吗?
答案 2 :(得分:0)
不要忘记构造函数可以完成两项工作。
var c1: TClass1;
c1 := TClass1.Create;
将构造一个TClass1类型的新实例,而
c1.Create;
将重新初始化 c1 - 构造函数中的所有语句都将执行,但构造函数不会返回新实例。