自己定义的类A中包含一个CArray的成员变量,类B中有一个CPtrArray的成员变量,然后将类B嵌套到类A中可行吗?

解决方案 »

  1.   

    可以啊,CArray和CPtrArray之间又不是有什么冲突。只要是类和C++数据类型,都可以作为成员变量。
      

  2.   

    我嵌套了以后没有重载模板的一些方法,直接使用就出现:error C2248: 'CObject::operator =' : private 等错误,如何解决?谢谢了啊
      

  3.   

    假如我使用了CArray的GetAt()方法,一定要重载后才能使用吗,但是如果只有一层模板类的时候好像不用重载就可以直接使用啊,为什么嵌套之后就出现错误了,编译不通过
      

  4.   

    CArray::Copy 
    Use this member function to copy the elements of one array to another. 
    void Copy(
       const CArray& src 
    );
     
    CPtrArray如果是自己分配的指针的话只能一个一个重新分配指针后插入新的CPtrArray,否则也可以调用类似的Copy方法。
      

  5.   

     试了一下,没有成功你就举个重载insertat()方法的例子吧。3Q~~
      

  6.   

    MSDN上的语法说明和例子都很全了。
    CArray<CPoint,CPoint> myArray;// Add elements to the array.
    for (int i = 0; i < 10; i++)
       myArray.Add(CPoint(i, 2*i));myArray.RemoveAt(5);#ifdef _DEBUG
       afxDump.SetDepth(1);
       afxDump << "myArray: " << &myArray << "\n";
    #endif
      

  7.   

    简化一下我使用的:
    class CA
    {
    public:
    ......private:
        CArray <CB,CB&>  m_a;
    };class CB{
    public:
      ......
    private:
        CPtrArray m_b;
    };注意类B中的m_b会嵌套了CB的类型指针 数组;
      

  8.   

    我将类A或类B分开编译,不会出现问题,主要是嵌套之后才出现的error C2248: 'CObject::operator =' : private问题
      

  9.   

    CArray <CB,CB&> m_a改成CArray <int,int&> m_a;编译过去了再来考虑其他的。
      

  10.   

    我将两个文件分开编译通过,我还用了insertAt()方法,可行的。只是两个类嵌套时才出现这个问题。
      

  11.   

    CA和CB需要自己写等号操作符。