自己定义了一个CLINE类继承于CObject,并且重载了SERIALIZE函数。那这个CLINE能作为CObarray类的元素吗?
比如
CLine* line=new CLine;
CObArray Lines;
Lines.Add(Line);
这样可行吗?如果行的话那可以用Lines.serialize(ar)进行存取吗?用CTypedPrtArray<CObArray,CLines*>Lines与上面的方法有什么不同吗?

解决方案 »

  1.   

    自己定义了一个CLINE类继承于CObject,并且重载了SERIALIZE函数。那这个CLINE能作为CObarray类的元素吗?
    比如
    CLine* line=new CLine;
    CObArray Lines;
    Lines.Add(Line);
    这样可行吗?如果行的话那可以用Lines.serialize(ar)进行存取吗?
    行,都可以用CTypedPrtArray <CObArray,CLines*>Lines与上面的方法有什么不同吗?
    CObArray已经是一个CObject*类型的指针数组了,为什么还要再定义一个CObArray*类型的指针数组呢?
    相当于定义了一个指针数组的数组
      

  2.   

    CTypedPtrArray 相当于java里的泛型CTypedPtrArray <CObArray,CLine*>Lines  定义的数组里是CLines的指针  用其成员函数不需要类型转换而第一种操作的是CObject*类型  需转换为CLine*类型
      

  3.   

    CObArray已经是一个CObject*类型的指针数组了,为什么还要再定义一个CObArray*类型的指针数组呢? 
    书上这么写的谢谢你们,明白了
      

  4.   

    也就是说它们两个的用途其实是一样的,只是CTypedPtrArray <CObArray,CLine*>指定了输入到这个数组的中类型,从而不用再人为的去转换了。是这个意思吧
      

  5.   

    他们本质都是一个指针数组。
    CObArray指针类型是CObject*,当你获取CObject*指针式,你需要转换成你自己的指针,比如CLine*
    CTypedPtrArray是一个模版类,他的指针类型是T,也就是你定义的CLine*
    CTypedPtrArray<CLine,CLine*>
      

  6.   

    CLine* line=new CLine; 
    CObArray Lines; 
    Lines.Add(line); //这个要不要写成Lines.Add((CObArray*)line);   ?当从Lines中提取某一元素是要不要转换类型?CLine* line=new CLine; 
    CObArray Lines; 
    ...
    line=(CLine*)Lines[1];//这里要不要类型转换?
      

  7.   

    line=(CLine*)Lines[0];//这里要不要类型转换?
    需要,你这样转换就可以了
      

  8.   

    Lines.Add(line); //这个要不要写成Lines.Add((CObArray*)line);  ? 这句呢?
      

  9.   

    可以这样 
    CTypedPtrArray <CPtrArray, CLine*>  Lines;