本帖最后由 VisualEleven 于 2012-09-03 10:05:53 编辑

解决方案 »

  1.   

    请试验以下代码,再将惟一一处的const删去,看看编译提示是什么。
    class A
    {
    public:
    A(){}
    A( const A& ){}
    };int main()
    {
    vector< A > vec;
    A a;
    vec.push_back( a );
    return 0;
    }
    复制构造函数的参数是const的。
      

  2.   

    vector在哪声明的?贴出来看看啊。看看这两种可能1. Single改为public的试试。
    2. vector定义成这样:vector<CPlayer::Single>
      

  3.   

    ‘no copy constructor available or copy constructor is declared 'explicit'’
    Single(Single &A) ??
      

  4.   

    应该是类需要一个拷贝构造函数
    类似CString(_In_ const CString& strSrc);
      

  5.   

    楼上的大侠,vector是库文件吧!也需要贴吗?
      

  6.   

    你可能需要这样定义拷贝构造函数:
    Single(const Single &A)这样一来,可能会带来其它问题,比如A.sList.GetCount()这句可能又要出错,此时又要修改sList.GetCount()的签名为(如果你不是这样签名的话):
    (你原来的返回类型) GetCount() const这可能带来一系列连锁反应。但只是时间问题,没什么难度。
      

  7.   


            Single(Single &A)
            {
                score=A.score;
                A.sList.CreateNewList(1,A.sList.GetCount(),sList);
            }猜想应改为        Single(const Single &A)
            {
                score=A.score;
                A.sList.CreateNewList(1,A.sList.GetCount(),sList);
            }
      

  8.   

    信息不够,你Vector又存指针了?然后指的那玩样生命周期太短?猜测。
      

  9.   

    ===========================================================
    wo 实验过你的例子了,const存在与否均可以顺利编译通过,我是vs2005环境
      

  10.   

    ======================================================================
    8楼老兄说的是,加上const,就引进了更多的错误。程序总体接近1w行代码,因为刚开始类设计的不科学,const用的有点乱。光一个const就把人弄的焦头烂额。
    最简单的办法就是去掉所有的const,这样程序便可以减少很多出错的机会。现在就剩下这最后一个错误了。错误如果指向别的地方还好说,结果指向vector库文件,这真是麻烦呀!
      

  11.   

    我用VC6和VC2008都试过了,去掉const不能编译通过。没有2005
    我还专门用gcc试了一下,去掉const不能编译通过。必须要加上啊。
      

  12.   

    楼上的,我也查了钱能的c++书籍,他在书中介绍拷贝构造函数的时候,所有的例子,都未加const。
    从理论上来说,加了const应该只是说这个引用不能改变,并没有别的意思吧~
      

  13.   

    从你提供的信息看,估计是Single插入vector时,复制构造函数由于Single类是私有类而导致无法访问。可以尝试将private改成public
      

  14.   

    灰常灰常高兴,问题已经解决,先进行以下总结:首先问题是按照8楼提供的思路解决的
    这里拷贝构造函数还是要用const,这点还没搞明白,因为拷贝构造函数不一定非要用const参数吧!!!因为代码多,类与类之间有千丝万缕的联系(这归功于类的设计有缺陷),这点还得再研究下。不过这次让我领教了不规范用const的后果,一个const类对象,只能调用const函数,而我的代码中好多属于对象为const,而调用的好多函数却不是const,因为涉及的函数多,最终修改起来很费劲再次感谢大家