CSDN的高手都到哪去了!!!!!

解决方案 »

  1.   

    不象cout或者cin一样支持连续的写<<,
    该成
    ar<<a[0];
    ar<<a[1];
    ar<<a[2];
    这样试验一下。
      

  2.   

    估计应该返回一个引用:
    CArchive& operator << (CArchive& ar,double a[3])
    {
    ar<<a[1]<<a[2]<<a[3];
    return ar;
    }
      

  3.   

    我想了一下,应该这样,你需要把该函数定义为一个全局函数,并根据是否需要访问该类的私有成员把它设置为友元函数或者不是。
    比如你的类为:MyTestClass.那么这样:
    void operator << (const CArchive& ar,MyTestClass & classI);
    class MyTestClass
    {
      ....
      friend void operator << (const CArchive& ar,MyTestClass & classI);
    }
    void operator << (const CArchive& ar,MyTestClass & classI)
    {
      ar<<classI.a[0];
      ar<<classI.a[1];
      ar<<classI.a[2];
    }至于为什么不能定义成员函数来实现这个功能的原因很简单,因为操作符<<是针对类MyTestClass进行重载的,也就是说<<必须放在类实例对象的右边,而现在放在<<左边的
    是什么呢?是CArchive类的实例ar,当然就不行了。