簡體   English   中英

如何將值分配給結構成員的數組?

[英]How to assign value to an array, which is a struct member?

我定義以下結構

struct CCPtDist
{
  double[] wDist = new double[8];
};

我想構建一個名為tmpPtDist的“ CCPtDist”變量,並希望為wDist分配一個雙數:

CCPtDist tmpPtDist;
tmpPtDist.wDist[0] = 233.7;

但是g ++編譯器返回錯誤:'struct CCPtDist'沒有名為'wDist'的成員?

作為C樣式數組的替代方法,可以使用std::array

#include <array>

struct CCPtDist
{
  std::array<double,8> wDist;
};

int main()
{   
  CCPtDist tmpdist;
  tmpdist.wDist[0]=233.7;
}

代碼中有很多錯誤。 首先,如果將數組聲明為成員,則將內存作為結構的一部分內聯分配。 您不能只是為其分配任意指針。 其次,我認為您還是不能正確聲明數組。 第三,您需要在構造函數中添加類似的復雜初始化。 我很驚訝它沒有在double[] wDist = new double[8];上給您帶來編譯錯誤double[] wDist = new double[8]; 線。

嘗試將其更改為這樣的內容

struct CCPtDist
{
    double* wDist;

    CCPtDist(): wDist(new double[8]) {}
};

如果要將固定大小(!)數組作為結構的一部分,則無需動態分配(即new ):

struct CCPtDist
{
  double wDist[8];
};

就足夠了。 但是,請注意,此數組的8個值不是用這種方式初始化的。 它們將包含隨機垃圾。 因此最好添加一個初始化數組的構造函數:

struct CCPtDist
{
  double wDist[8];
  CCPtDist():wDist() {}
};

如果編譯器支持,則使用C ++ 11中引入的std::array可能是更好的方法,如SRN的答案所述。

暫無
暫無

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

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