现按网上找到的一方法建立一头文件如下:// UltraCArray_T.h
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_ULTRACARRAY_T_H__552AA3BD_C40E_4090_B373_53767023912A__INCLUDED_)
#define AFX_ULTRACARRAY_T_H__552AA3BD_C40E_4090_B373_53767023912A__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <Afxtempl.h>
template <class TYPE, class ARG_TYPE>
class UltraCArray_T  :  public CArray <TYPE, ARG_TYPE> 
{
public:
void operator =(const UltraCArray_T<TYPE, ARG_TYPE> &rhs);

};template <class TYPE, class ARG_TYPE>
void UltraCArray_T<TYPE, ARG_TYPE>
::operator =(const UltraCArray_T<TYPE, ARG_TYPE> &rhs)
{
RemoveAll();
Append(rhs);
}#endif // 在使用定义如下(VeloPoint是自己定义的一STRUCT): typedef UltraCArray_T<VeloPoint,VeloPoint&> m_arrPointBY;
typedef UltraCArray_T<m_arrPointBY , m_arrPointBY&> m_arrPointBX;
typedef UltraCArray_T<m_arrPointBX , m_arrPointBX&> m_arrPointBlock;在使用以下方法:        m_arrPointBlock.RemoveAll();
        m_arrPointBlock.SetSize(nXCount);
        m_arrPointBlock[nXNum][nYNum].Add(vp);
时均碰到错误,错误信息如下:
        error C2143: syntax error : missing ';' before '.'
        error C2143: syntax error : missing ';' before '['
 等,请问如何解决。另外,我是想实现一个三维数组A[X][Y][Z];其中X,Y是由变量赋值后不会变,但Z的数值不定。如果有其它的方法实现也行。

解决方案 »

  1.   

    定义一个类,成员包含x, y, x,写一下构造函数.
    然后,用CPtrArray 类管理这个类,实现数据的操作,要添加多少,只需要直接Add就行,不需要SetSize();
      

  2.   

    x,y赋值后不变的话就不是三维数组了,可以做成一个Point为元素的一维数组..........
      

  3.   

    没有重载[]操作符。好像[]操作符也不支持二维及以上的重载。所以只能以这种方法访问元素:T & ElementAt(int idx1, int idx2, int idx3);
      

  4.   

    我自己仔细看了下代码,发现问题在这里:
    typedef UltraCArray_T <VeloPoint,VeloPoint&> m_arrPointBY; 
    typedef UltraCArray_T <m_arrPointBY , m_arrPointBY&> m_arrPointBX; 
    typedef UltraCArray_T <m_arrPointBX , m_arrPointBX&> m_arrPointBlock; 这里只是声明,根本没有定义,当然不能使用 -_-! 
    改了以后没有出现问题。
    由于自己的失误耽误大家的时间了,不好意思~~呵呵~~~