我已經定義了這樣的結構:複製結構的動態數組到另一個結構
struct Queries {
uint64_t Id;
uint64_t from;
uint32_t counter; // total queries
char queries[];
};
我所試圖做的是創建一個新的結構「對象」,並從現有的值複製到這個新目的。
我試過
void function(Queries* oldq){
Queries* q = new Queries();
// values are copied correctly
q->Id = oldq->Id;
q->from = oldq->from;
q->counter = oldq->counter;
// copy is not correct
for (unsinged i = 0; i < oldq->counter; i++)
q->queries[i] = oldq->queries[i];
}
1)我也試過:
q = oldq;
但這不起作用。
2)我想我必須爲查詢數組分配counter * sizeof(char)
空間,但由於結構的成員不是一個指針,我不知道該怎麼做。
如果您定義了正確的副本,您可以使用'查詢* q =新查詢(* oldq);' – Slava
您的想法是正確的。您需要在複製數組之前預分配'counter * sizeof(char)'字節。但是你不需要一個顯式循環來複制它 - 你可以使用'memcpy'。或者,您也可以將其作爲[複製構造函數](http://stackoverflow.com/questions/4172722/what-is-the-rule-of-ree)實現,正如Slava所引用的。 – jweyrich
但是,我應該如何做拷貝構造函數內的數組情況下的賦值? – pirox22