我写的是个单文档,想实现在打印机上在想要的位置打印字体或图片:问题
1、我把从用户接受到的关于字体的信息保存在CList中,但编译时提示好像要重载“=”操作符,如果是CList<CMyObject,CMyobject>,即第二个参数为非引用的话,还要自定义拷贝构造,请问这是为什么呢?CObject不是有“=”
操作符吗?我可以只写个空函数吗?
2、文档序列化,有好一点的序列化结构体的例子吗?像序列化字体结构体lf就很麻烦。在这里想提醒一下别的初学者,序列化的读和写顺序要严格一致。
3、请高手指点一下,要写一个程序之前应该怎么做好各个类的规划,我觉得我写程序时很没头绪,结构也比较乱,在这方面下功夫应该应该看什么方面的书。
4、在下非计算机专业,大二时偶然接触了html,后来玩过一点asp,as,java,对编程有兴趣,但现在工作了苦于没太多时间钻研,请各位给点提高方面的建议。
请各位高手针对以上的问题选择回答(3、4有亲身经历最好)。小弟分数不多,尽可能地给分,忘高手们不吝赐教。

解决方案 »

  1.   

    clist存放的数据类型必须是可复制的, 因为在clist插入一条,就要复制一条
      

  2.   

    1、因为CList内部的实现会通过"="复制出存储的数据,如果只写空函数,数据会出错。另外最好是保存指针,否则在插入、删除,甚至比较数据时会有拷贝构造、赋值函数等的开销。但保存指针时需要注意生存期和比较时可能会比较到地址的问题。
    2、3 建议参考VC提供的例子, 路径好像是 AllVCLanguageSamples\MFC\ole\drawcli, 其中有序列化的例子,仔细分析其中的 drawobj、drawtool 两个文件,学习人家是怎么设计的。
    至于4, 多读多看多练吧。
      

  3.   

        1: CList是派生自CObject类,如果CList A.往A里面添加类对象时,他会调用拷贝构造函数(这个无参数构造函数:不一样),如果派生类没有写拷贝构造函数时,他就会调用基类的拷贝构造函数,但这个函数是CObject私有的,所以会报错...
      

  4.   

    MFC的话,存储对象使用 CObArray 或 CPtrArray 较为方便。
      

  5.   

    csdn里人气还是蛮高的,帖子一下就被淹了,虽然关注我的人不多,但还是谢谢各位,分数就先散给各位了。