簡體   English   中英

如何在構造函數 C++ 中初始化多維動態分配數組?

[英]How to initialiaze a multidimensional dynamically allocated array in a constructor C++?

我創建了一個 class 模板,該模板包含以下類型的聯合,它應該是可變長度的。

union BufferUnion {
    int buf32;
    short buf16[2];
};

class SomeClass {
    
    int nBufs;
    int buflen;

    BufferUnion **bu;

    SomeClass(int nBufs, int buflen);
    ~SomeClass();
}

現在我想在 .cpp 文件中動態分配其中一些緩沖區,但是在嘗試調用構造函數時出現讀取沖突。

SomeClass::SomeClass(int nBufs, int buflen)
{
    this->nBufs = nBufs;
    this->buflen = buflen;

    for (int i=0; i < nBufs; ++i) {
        bu[i] = new BufferUnion[buflen]; 
    } 
}

創建二維數組時應該做的第一件事是為第一個維度分配 memory,然后對其進行迭代創建第二個維度。 您的第二部分是正確的,但您缺少的是: bu = new BufferUnion*[nBufs]在循環創建第二個維度之前。

作為旁注: for (int i=0; i < nBufs, ++i)中的逗號而不是分號: for (int i=0; i < nBufs; ++i)怎么樣? 使用逗號分隔符,編譯器會將其視為僅一個表達式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM