簡體   English   中英

C ++初始化類的char數組成員

[英]c++ initializing char array member of class

在我的C ++項目中,我有兩個成員的課程。 我遇到問題的char數組成員。

class frame_message
{
public:
    explicit frame_message(const unsigned int id, const char data[]) :id_(id), data_{ *data }{};
    // only the first char 'a' is copied to `data_`
    char* get_data() { return data_; };
    void get_data(char** data) { *data = data_; };
private:
    unsigned int id_; char data_[8];
};

現在從main方法中,我想發送另一個用於初始化類數組的char數組。

main
{
char data[8]={'a','b','c'} // indexs 3 to 7 are '\0'
char data2[8];
char data3[8];
frame_message myMessage(0xF004,data); // the data is passed as "abc"
data2 = myMessage.get_data(); // analysis error
myMessage.get_data(&data3); // runtime exception
}

我應該如何使用將數據數組發送給構造函數的形式來初始化類的私有成員?

同樣對於get_data函數,應該傳遞什么數據類型?

ps我是c / c ++的新手,但對指針,引用和特別是charchar*感到困惑

對於構造函數,最好也傳遞一個length參數,因為您最多只能接受8個字節。 然后,如果您的長度是<= 8:

memcpy(data_, data, length)

您的參數化get_data中的內容相同,因此可能是:

memcpy(*data, data_, 8) /* Assuming that they provide long enough array. */

在處理數組時總是包含長度,在處理指針以檢查它們是否為NULL時,這是一個好習慣-我將留給您。 出現錯誤的原因是因為無法將指針分配給靜態聲明的數組-它具有固定的地址,因此只能更改內容。

暫無
暫無

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

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