MFC的数据类型

MFC的数据类型

MFC数据类型分为3类

    Array:数组

    List:双向链表

    Map:又称为Dictionary,其内对象成对存在,一为键值对象(key object),一为实值对象(value object) .

MFC的数据类型

MFC Collection classes所支持的对象中,有两种特别需要说明,一是Ob,一是Ptr:
    Ob表示派生自CObject的任何对象。MFC提供CObList, CObArray两种类。
    Ptr表示对象指针。MFC提供CPtrList,  CPtrArray两种类。
下表是对所有collection classes性质的一份摘要整理

MFC的数据类型

MFC的数据类型

注释
①若要文件读写,你必须调用collection object的Serialize函数;若要内容倾印,你必须调用其Dump函数。不能够使用archive<<obj或dmp<<obj等形式。
②究竟是否为Serializable,必须视其内含对象而定。举个例子,如果一个typed pointer array是以CObArray为基础,那么它是Serializable;如果它是以CPtrArray为基础,那么它就不是Serializable。一般而言,Ptr都不能够被Serialized。
③虽然它是non-template,但如果照预定数据类型去使用它(例如以CByteArray储存bytes而不是用来储存char),那么它还是type-safe的。
④手册上说它并非Serializable,但我存疑。各位不妨试验之。

Template-Based Classes的使用方法
    简单型template-based classes使用时需要指定参数:
        .CArray<TYPE,ARG-TYPE>
        .CList<TYPE,ARG-TYPE>
        .CMap<KEY,ARG-KEY,VALUE,ARG-VALUE>


    其中TYPE用来指定你希望收集的对象的类型,它们可以是:
        .C++基础类型,如iht,  char,  long,  float等等。
        .C++结构或类。


    ARG-TYPE则用来指定函数的参数类型。举个例子,下面的程序表示我们需要一个int数组,数组成员函数(例如Add)的参数是int:
        CArray<int,int>mintArray;
        m_intArray .Add(15);


    再举一例,下面的程序表示我们需要一个由iht组成的链表,链表成员函数(例如AddTail)的参数是int:
        CList<int,int>m intList;
        m_intList.AddTail(36);
        m_intList.RemoveAll();


    再举一例,下面的程序表示我们需要一个由CPoint组成的数组,数组成员函数(例如Add)的参数是CPoint:
        CArray<CPoint,CPoint>mpointArray;
        CPoint point(18,64);
        m_pointArray .Add(point);


    “类型指针”型的template-based classes使用时亦需指定参数:
        .CTypedPtrArray<BASE-CLASS,TYPE>
        .CTypedPtrList<BASE-CLASS,TYPE>
        .CTypedPtrMap<BASE-CLASS,KEY,VALUE>


     其中TYPE用来指定你希望收集的对象的类型,它们可以是:
        .C++基础类型,如iht,  char,   long,  float等等。
        .C++结构或类。


     BASE_CLASS则用来指定基类,它可以是任何用来收集指针的non-template collection classes,例如CObList、CObArray、CPtrList或CPtrArray等等。举个例:
    下面程序表示我们需要一个派生自CObList的类,用来管理一个链表,而链表组成部分为CStroke
       CTypedPtrList<CObList,CStroke*>m_strokeList;
       CStroke*pStroke工tem=new CStroke(20);
       m_strokeList.AddTail(pStrokeItem);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值