有一小问题,始终不明白。请高人指教
  我首先定义了一个结构,比如STRUCT_SUBMIT
  如果用CList,保存这个结构,那么写成
  CList<STRUCT_SUBMIT,STRUCT_SUBMIT>  sSubmit;  
  还是 CList<STRUCT_SUBMIT,STRUCT_SUBMIT&> sSubmit;   
  我的程序都用的是CList<STRUCT_SUBMIT,STRUCT_SUBMIT>  sSubmit;同事们写的有用CList<STRUCT_SUBMIT,STRUCT_SUBMIT&> sSubmit; 的,这两种对CList的声明那种对呢,总有区别吧,区别是什么?请指教
 还有一个类似的就是函数的声明,void Submit(STRUCT_SUBMIT &sSubmit);还是
           void Submit(STRUCT_SUBMIT &);  有没有区别,郁闷几天了,先谢谢
  

解决方案 »

  1.   

    void Submit(STRUCT_SUBMIT &sSubmit);
    还是void Submit(STRUCT_SUBMIT &);  没有区别.第一个问题不清楚意思。
      

  2.   

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_clist.asp
      

  3.   

    1.建议使用引用的方式,CList的Gets函数(比如GetTail)可以返回对象的引用,而不是对象本身,这样就不用执行拷贝构造函数,提高执行效率.示例如下,
    class Test
    {
    public:
    Test()
    {
    TRACE("Construction\n");
    } Test(const Test& ref)
    {
    TRACE("Construction Copy\n");
    }
    ~Test()
    {
    TRACE("Destruction\n");
    }
    };
    void CMyDlg::ffff() 
    {
    CList<Test,Test&> lst; //这里换成CList<Test,Test> lst; 不使用引用多一次构造
    Test t;
    lst.AddTail(t);
    Test& t2 = lst.GetTail();
    }