定义了两个类
TMyClassA = class
...
end;TMyClassB = class
...
private
  m_ClassAPtrList : TList; //此处想定义一个链表(把),不知道该如何处理
end;因为OP没有C++的模板概念,不能象C++这样定义
typedef CTypedPtrList<CPtrList, CMyClassA*> CMyClassAList; //协议库表类那么我该如何定义呢?另外OP中定义的类能不能像C++那样 New 出来(如:定义 pClassA = ^TMyClassA, 然后New(pClassA),最后Dispose(pClassA))?我试了试好像不行。如果我定义ClassA = TMyClassA;ClassA = TMyClassA.Create, 那么我怎样才可以把这个ClassA加入到链表中呢?这些也许是些基础问题,请各我帮忙看看,谢了先。顺带说一下,论坛好像出了问题,想给分结题,显示网页有错,我关闭了防火墙也一样。昨天的问题只能缓一缓给分了。

解决方案 »

  1.   

    你看一下Tlist的方法,有add,remove....
      

  2.   

    你要重构这个方法;
      constructor  create(Alist:Tlist);
      

  3.   

    找個delphi版的數據結構看看吧。在delphi盒子裡好像有這個書。
      

  4.   

    To: kewenpan(大风) Tlist的方法当然看了,Add加的Pointer类型,假如我这样做
    ClassA = TMyClassA.Create;
    List.Add(@ClassA),这样是不行的,要出错如果我定义
    pClassA = ^TMyClassA;
    New(pClassA);//这样又不会执行ClassA的构造函数(我在TMyClassA中实现的construct)
      

  5.   

    TList可以添加对象
    ClassA = TMyClassA.Create;
    List.Add(ClassA);
    取的时候可以这样ClassA(List[0])强制转换过来
      

  6.   

    如果ClassA = TMyClassA.Create; 那么ClassA本身就是指针类型的吗,或者说ClassA就是创建的这个对象的地址吗?
      

  7.   

    刚才我看了一下C++ Builder中对象的定义,才发觉Delphi中其实与C++类似,只是自动帮我们完成了转换而已(是为了通用VCL?),不知道这样理解是否正确。
      

  8.   

    如果ClassA = TMyClassA.Create; 那么ClassA本身就是指针类型的吗,或者说ClassA就是创建的这个对象的地址吗?
    =========================================================================================
    是的这里,在堆中为新的对象分配了存储空间,置所有的序数域为零,赋给所有指针和类类型的域以nil值,并且置所有串类型的域为空。接下来执行构造器中指定的其他行为;典型地是,对象基于作为构造器参数传递的值被初始化。最后,构造器返回一个引用,该引用指向新的分配区域和初始化了的对象。返回值的类型域构造器调用中指定的类类型相同。记住一句话:一切对象皆指针:)
      

  9.   

    晕,还是不能给分,是不是论坛系统出问题了 (提示ClassFactory无法提供轻巧的类型)