在主我可以在函數內部指針數組:如何創建,其大小是未知的,直到運行時間
Node* myNodeArray2[myHeight][myWidth];//Does not call constructor
for(int i=0; i<myHeight; i++){
for(int j=0; j<myWidth; j++){
theNodeArray[i][j] = new Node("ThisIsTest", 5, 5);
}
}
因此,對於上面的代碼myHeight和myWidth可以是在運行時的用戶輸入。它不調用默認構造函數,我可以使用new運算符並遍歷數組創建對象。
我希望能夠到節點* myNodeArray2傳遞給一個函數,讓它創建數組的大小和填充它。當它被創建時,我希望元素是指針。我不想調用默認的構造函數。我希望能夠在我選擇時使用非默認構造函數調用new運算符。
當我嘗試:
void Test(Node*& theNodeArray, int myHeight, int myWidth){
theNodeArray = new Node*[myHeight][myWidth];
}
int main(){
Node* myNodeArray;
Test(myNodeArray, myHeight, myWidth);
}
我得到
「myWidth不是一個常量表達式。」
我嘗試了幾種不同的方法,但不能得到我想要的。我需要創造發生在一個單獨的功能。我需要能夠在運行時定義大小。任何幫助?
編輯:
我不想使用std :: vector。
編輯2:
我不想做這個
int** ary = new int*[sizeX];
for(int i = 0; i < sizeX; ++i)
ary[i] = new int[sizeY];
由於這迫使行是連續的內存空間物體。我想分配一個2d指針數組。我不想一定要創建將被指向的對象。
爲什麼你不希望使用'VECTOR'? – Jay 2014-11-04 19:54:04
代碼將被用於C門控不支持向量的自定義HDL。 – NDEthos 2014-11-04 19:55:36
如果您不能使用[tag:C++],請將標籤更改爲[tag:c]。 – Jarod42 2014-11-04 19:57:25