-4

我有

struct udtJoinFeatures
{
    double Values[16];
};

现在当我想做以下...

void clsMapping::FeedJoinFeaturesFromMap(udtJoinFeatures &uJoinFeatures)
{
    uJoinFeatures.Values.resize(16);
    memcpy(&uJoinFeatures.Values[0], &((char*)(m_pVoiceData))[iBytePos],iByteCount);
}

...编译器告诉我“从 .resize 剩下需要一个类/结构/联合”。

有没有人看到我哪里出错了,我怎样才能让它发挥作用?

谢谢!

4

4 回答 4

4

你不能调用resize数组。改为使用vector

vector<double> Values;

但是,我不明白为什么要在数组上调用 resize 以将其调整为相同数量的元素。

于 2013-09-15T11:30:04.393 回答
1

的类型Values是内置数组。内置数组在 C++ 中具有固定大小。如果要为数组使用可变大小,则需要使用合适的类类型,可能是std::vector<double>

struct udtJoinFeatures
{
    std::vector<double> Values = std::vector<double>(16);
};
于 2013-09-15T11:31:38.693 回答
0

您不能resize在数组上调用方法。

我建议你使用这样的容器std::vector,它可以让你做到这一点:

std::vector<double> Values;
于 2013-09-15T11:31:30.887 回答
0

您需要阅读有关向量的信息 - http://www.cplusplus.com/reference/vector/vector/。然后使用

typedef std::vector<double> udtJoinFeatures;

void clsMapping::FeedJoinFeaturesFromMap(udtJoinFeatures &x) {
   x.clear();
   x.resize(m_pVoiceData.size());
   x = m_pVoiceData;
}
于 2013-09-15T11:33:27.123 回答