首先,我只录制了voltageSamples
,currentSamples
,energySamples
中的每一个:
static QList<qreal> voltageSamples{
3091, 3085, 2911, 3048
};
static QList<qreal> currentSamples{
4152956, 5341953, 7330711, 3425060,
5382685, 9864420, 6313012, 3024116,
6382968, 4411640, 7584845, 9992644,
9541896, 7608791, 7332224, 3368969
};
static QList<qreal> energySamples{
8.914435413888887e-07, 2.038108591597222e-06, 3.611666070833333e-06, 4.346864713888889e-06,
5.500030215625000e-06, 7.613345194791666e-06, 8.965820335069444e-06, 9.613695186458332e-06,
1.090402989812500e-05, 1.179585517868056e-05, 1.332915266444444e-05, 1.534919340638889e-05,
1.736889472638889e-05, 1.897942215472222e-05, 2.053140956805556e-05, 2.124450800638889e-05
};
然后,我需要添加多个样本。我不太擅长C ++,但是我想一个好的方法是将上面的三个变量放入一个结构中,然后初始化该结构的多个静态变量。
这是我的最佳尝试:
struct recording {
QList<qreal> voltageSamples;
QList<qreal> currentSamples;
QList<qreal> energySamples;
};
static recording r1;
r1.voltageSamples = {3091, 3085, 2911, 3048};
r1.currentSamples{
4152956, 5341953, 7330711, 3425060,
5382685, 9864420, 6313012, 3024116,
6382968, 4411640, 7584845, 9992644,
9541896, 7608791, 7332224, 3368969
};
r1.energySamples{
8.914435413888887e-07, 2.038108591597222e-06, 3.611666070833333e-06, 4.346864713888889e-06,
5.500030215625000e-06, 7.613345194791666e-06, 8.965820335069444e-06, 9.613695186458332e-06,
1.090402989812500e-05, 1.179585517868056e-05, 1.332915266444444e-05, 1.534919340638889e-05,
1.736889472638889e-05, 1.897942215472222e-05, 2.053140956805556e-05, 2.124450800638889e-05
};
static recording r2;
...
但是我的代码不起作用。我在做什么错了?
答案 0 :(得分:6)
您从初始化切换为赋值,但尝试继续使用初始化语法。只是不可能。
如果将=
添加到currentSamples
和energySamples
中,则分配可能是有效的(我对QList<qreal>
的了解不足设计以确保确实如此,但这实际上并不重要,因为,请参见下文)。。
此外,您的分配只是在空白处自由浮动,但是类似这样的语句/动作必须在 function 中(例如main
)。
最后,您实际上应该使用类似这样的数组,而不是一堆带编号的变量。如果使用数组,则可以坚持使用初始化器!
static QList<qreal> voltageSamples[] = {
{3091, 3085, 2911, 3048},
{ /*(next sample data)*/ }
};
static QList<qreal> currentSamples[] = {
{
4152956, 5341953, 7330711, 3425060,
5382685, 9864420, 6313012, 3024116,
6382968, 4411640, 7584845, 9992644,
9541896, 7608791, 7332224, 3368969
},
{ /*(next sample data)*/ }
};
以此类推。
或者,保持recording
类型(合理):
static recording recordings[] = {
{ // recording 1
{3091, 3085, 2911, 3048}, // voltage samples
{ // current samples
4152956, 5341953, 7330711, 3425060,
5382685, 9864420, 6313012, 3024116,
6382968, 4411640, 7584845, 9992644,
9541896, 7608791, 7332224, 3368969
},
{ // energy samples
8.914435413888887e-07, 2.038108591597222e-06, 3.611666070833333e-06, 4.346864713888889e-06,
5.500030215625000e-06, 7.613345194791666e-06, 8.965820335069444e-06, 9.613695186458332e-06,
1.090402989812500e-05, 1.179585517868056e-05, 1.332915266444444e-05, 1.534919340638889e-05,
1.736889472638889e-05, 1.897942215472222e-05, 2.053140956805556e-05, 2.124450800638889e-05
}
},
{ // recording 2
/* etc */
}
};
关键是初始化程序可以嵌套。