的陣列我在用於在其被使用的類,稱爲CommentManager的頭部聲明動態分配一類
private:
Comment *commentArray;
int arrSize;
。這些在建築工初始化,如下:
arrSize = 1;
commentArray = new Comment[arrSize];
如果我正確理解這一點,這應該創建一個註釋的「陣列」。然後我設置了這個類的核心功能:
void CommentManager::addComment(QString commText, int start, int end)
{
Comment *saveArray;
saveArray = new Comment[arrSize + 1];
for (int i = 0; i < arrSize; i++)
saveArray[i] = commentArray[i];
delete[] commentArray;
commentArray = saveArray;
arrSize += 1;
這應該放大commentArray的大小一個。然後,我要添加註釋的數據,這是通過在評論中聲明的函數來完成:
頁眉:
private:
QString comment;
int startPosition;
int endPosition;
功能:
void Comment::setComment(QString comm,int newStartPos, int newEndPos)
{
comment = comm;
startPosition = newStartPos;
endPosition = newEndPos;
}
我調用這個函數如下:
commentArray[arrSize].setComment(commText,start,end);
這會導致段錯誤:根據調試器的「註釋」不存在。因此,我試圖在commentArray中初始化單個註釋,但是編譯器不會編譯它。我不確定這裏出了什麼問題,任何幫助都會很感激。
是在頭一個'類{}包裹那些東西;'?另外,爲什麼你不使用'std :: vector'? – birryree
..或QVector? – stijn
你知道什麼是「三個規則」嗎?如果不是這樣做,你會錯誤的。使用已知道如何進行內存管理的對象(std:vector或QVector)。代碼更好時也不要使用英文。在上面描述了構造函數中的內容(但不顯示構造函數?????????只需顯示構造函數就可以更加精確,我們可以看到在定義它的過程中是否犯了錯誤。你有沒有定義(爲什麼不只是把課程壓低?) –