我定义下面的结构如何赋值给一个数组,这是一个struct成员?
struct CCPtDist
{
double[] wDist = new double[8];
};
我想建立一个“CCPtDist”叫tmpPtDist变量,要分配双号wDist:
CCPtDist tmpPtDist;
tmpPtDist.wDist[0] = 233.7;
但是g ++编译器返回一个错误:'struct CCPtDist'没有名为'wDist'的成员?
我定义下面的结构如何赋值给一个数组,这是一个struct成员?
struct CCPtDist
{
double[] wDist = new double[8];
};
我想建立一个“CCPtDist”叫tmpPtDist变量,要分配双号wDist:
CCPtDist tmpPtDist;
tmpPtDist.wDist[0] = 233.7;
但是g ++编译器返回一个错误:'struct CCPtDist'没有名为'wDist'的成员?
代码中有很多错误。首先,如果您将数组声明为成员,则内存将作为结构的一部分内联分配。你不能只为它指定一个任意的指针。其次,我不认为你正确地声明了阵列。第三,你需要在构造函数中进行复杂的初始化。 我很惊讶它不会给你在double[] wDist = new double[8];
行的编译错误。
尝试将其更改为这样的事情
struct CCPtDist
{
double* wDist;
CCPtDist(): wDist(new double[8]) {}
};
至于C风格的数组的替换,可以使用std::array
:(!)
#include <array>
struct CCPtDist
{
std::array<double,8> wDist;
};
int main()
{
CCPtDist tmpdist;
tmpdist.wDist[0]=233.7;
}
如果你想有一个固定大小数组作为你的结构的一部分,不需要动态分配(即new
):
struct CCPtDist
{
double wDist[8];
};
就足够了。但是请注意,这个数组的8个值不是以这种方式初始化的。他们将包含随机垃圾。如果你的编译器支持它,使用std::array
,这是在C++ 11出台,可能是一个更好的方法,如SRN的答案描述
struct CCPtDist
{
double wDist[8];
CCPtDist():wDist() {}
};
:因此,更好地补充一点,初始化数组构造函数。
我相信'double [] wDist = new double [8];'是语法错误。你确定这*完全是*你的代码中有什么?它可能是'double * wDist = ...'吗? –