[英]Dynamically allocate and delete an array of objects in c++
所以我做了一些研究,到目前為止我有以下(示例代碼):
一類:
class my_class {
my_class(int a, double b);
...
}
還有一個動態數組:
my_class **array_t;
和初始化(帶有一些隨機數):
int amount = 10;
array_t= new my_class*[amount];
for (int i = 0; i < amount; i++) {
array_t[i] = new my_class(1, 2.0);
}
我認為這應該有效,對吧? 至少編譯器沒有向我拋出任何錯誤。
現在我想改變array_t的大小。 所以我認為最簡單的方法是刪除數組,並為其分配新的內存。 我試過這個:
1: for (int i = 0; i < amount; i++) {
2: delete array_t[i];
3: }
4: delete[] array_t;
並在下一步中分配新內存,如上所示。
但是我收到以下錯誤消息:
Line 2: error: expected primary-expression before '[' token
Line 4: error: expected primary-expression before ';' token
我讀到 for 循環實際上不是必需的。 但無論如何這兩個刪除語句都不起作用..
這可能是一個非常愚蠢的錯誤,但我不知道這里有什么問題:D 任何幫助將不勝感激!
嘗試寫 delete [] array_t; 在 for 循環中。 因為通過這種方式,您將“刪除”數組。 並重新分配它只需使用 array_t= new my_class[number];
好的,首先感謝大家的幫助;) 我剛剛犯了一個愚蠢的編程錯誤:D
基本上我輸入的是:
delete my_class[i];
代替
delete array_t[i];
在迭代 for 循環時,它給了我“預期的主表達式之前 .. 令牌”-錯誤。 我對我的變量感到困惑。
我在上面發布它的方式我已經嘗試過並且確實有效。 給您帶來的不便,我深表歉意;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.