2016-03-10 170 views
-1

我想創建二維數組並將對象分配給它。重要的是,我想用POINTERS來做到這一點。我想這樣做:二維數組和分配對象

  1. 創建將指向指針數組的指針。
  2. 有數組指針我創建內存中的下10個單元格,例如存儲單個對象。

這是我的代碼:

我創建的基本指針,用於存儲地址的指針數組:

SpecialPoint **arrayOfPointsOnTheMap = NULL; 

接下來我初始化數組:

arrayOfPointsOnTheMap = new SpecialPoint*[size]; 

然後在內存中創建單元格:

for (int i = 0; i < szer; i++) { 
    arrayOfPointsOnTheMap[i] = new SpecialPoint[wys]; 
} 

而對於我要分配對象這個新創建的數組的結尾:

SpecialPoint *pontInTable; 

for (int i = 0; i < szer; i++) { 
    pontInTable = arrayOfPointsOnTheMap[i]; 

    for (int j = 0; j < wys; j++) { 
     pontInTable[j] = new SpecialPoint(); 
    } 
} 

但是,試圖創建新對象的int數組時,我得到的錯誤。我對此有點困惑。誰能幫忙?

+0

您的代碼要麼是C要麼不是。在這種情況下,它不是C. –

+0

1)C和C++是不同的語言。選擇你使用的那個2)沒有二維數組。 'anytype ** p;'不是數組,不能指向2D數組!指針不是數組(反之亦然)。 – Olaf

+0

1)c不是C++不是c 2)如果你有錯誤,你應該在你的問題中包含錯誤信息 – user463035818

回答

1

你想在分配部分做什麼不是很清楚,所以我會根據我最好的猜測來回答。突然想到說,你的等級如下表所示:

class SpecialPoint 
{ 
    public: 
    int x; 
    int y; 
    SpecialPoint(int xx, int yy) 
    { 
     x=xx; 
     y=yy; 
    } 
    SpecialPoint() 
    { 
     x=0; 
     y=0; 
    } 
}; 

然後你可以用下面的代碼來創建和初始化您的二維數組:

int size = 4; 
    int wys = 3; 
    SpecialPoint** arrayOfPointsOnTheMap = new SpecialPoint*[size]; 
    for(int i = 0; i < size; i++) 
    { 
     arrayOfPointsOnTheMap[i] = new SpecialPoint[wys]; 
    } // you have your array at that point 

    SpecialPoint fakePoint(5,6); // create a special point 


    for(int i=0; i < size; i++) 
    { 
     for(int j=0; j < wys; j++) 
     { // Assign your special point instance to all the array cells. 
      arrayOfPointsOnTheMap[i][j] = fakePoint; 
     } 
    } 

你與陣列完成後,不要忘了清潔內存使用:

for(int i = 0; i < size; i++) { 
    delete [] arrayOfPointsOnTheMap[i]; 
} 

delete [] arrayOfPointsOnTheMap; 

祝你好運!

+1

謝謝你的時間和幫助! – DKM