[英]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.