template <class CType>
class DataArray
{
private:
int Index;
CType *BufArray;
public:
DataArray();
~DataArray(void);
};       //这里少了一个分号
写上分号后编译就没有问题了

解决方案 »

  1.   

    分號我忘了打。DataArray<int> b;   =>這個正確
    DataArray<int>* a;  => 宣告後調用函數會出現未初始化.例如
    b.Add(1);  =>正常運作
    a->Add(1);=>會說a 未初始化
      

  2.   

    a = new DataArray<int>();
      

  3.   

    是說 DataArray<int>* a; =>改成 a = new DataArray<int>();嗎?所以沒有辦法用這樣 DataArray<int>* a; 宣告嗎?
      

  4.   

    即便是用标准库里的vecter,也需要这样啊:
    vector<int>*a = new vector<int>();
    仅仅vector<int>*a;的话,a只是个未初始化的野指针。
      

  5.   


    你只是定义一个野指针,使用a之前,必须为a赋值
    如ls所说应该也可以typedef   DataArray<int> aType;
    aType pX=new aType;
      

  6.   

    所以宣告CArray<int, int>*b;,是不能直接始用b->Add(1);, 因為b是野指针那如果我改用這樣宣告的話
    DataArray<int> *a;
    DataArray<int> b;a = &b;
    這樣的話,可以用a->Add(1); 了嗎?