我用CArray<CStringArray, CStringArray&> caTemp
想构健一个三维数组。
但是编译的时候出错指向afxtempl.h
AFX_INLINE TYPE CArray<TYPE, ARG_TYPE>::GetAt(int nIndex) const
{ ASSERT(nIndex >= 0 && nIndex < m_nSize);
return m_pData[nIndex]; }
不只道是什么原因?
怎么解决?
请高手指点~~

解决方案 »

  1.   

    nIndex估计不在范围里
    你看看nIndex的值是多少吧
      

  2.   

    写一个类继承CStringArray,重载=及拷贝构造函数。
    然后用这个类来初始化CArray模板。
      

  3.   

    支持楼上说法,因为CStringArray自身没有赋值(=)函数和拷贝构造函数,GetAt返回时则需要调用TYPE的拷贝构造函数,所以不能编译通过
      

  4.   

    我用CArray<CStringArray, CStringArray&> caTemp 在>前加空隔
    CArray<CStringArray, CStringArray& > caTemp
    CStringArray&本身是个模板类,用它做参数时在>前要加空格,否则会被解析成>>,而>>是有语义的
      

  5.   

    class CMyStrArr : public CStringArray  
    {
    public:
    CMyStrArr();
    virtual ~CMyStrArr();
    const CMyStrArr& operator=(const CMyStrArr& src)
    {
    RemoveAll();
    for(int i=0;i<src.GetSize();i++)
    Add(src[i]);
    return *this;
    }
    CMyStrArr(const CMyStrArr& src)
    {
    RemoveAll();
    for(int i=0;i<src.GetSize();i++)
    Add(src[i]);
    }};
    使用:
    CArray<CMyStrArr,CMyStrArr&> arr;
    CMyStrArr s;
    s.Add("test");
    arr.Add(s);
      

  6.   

    change 
    CArray<CStringArray, CStringArray&> caTemp
    to
    CArray<CStringArray*, CStringArray*> caTemp