C++:调整大小必须在类/结构/联合中

C++: resize must be in class/structure/union

本文关键字:结构 调整 C++      更新时间:2023-10-16

我有

struct udtJoinFeatures
{
    double Values[16];
};

现在,当我想执行以下操作时...

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

。编译器告诉我"从.resize向左,需要一个类/结构/联合"。

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

谢谢!

你不能在数组上调用resize。请改用vector

vector<double> Values;

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

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

struct udtJoinFeatures
{
    std::vector<double> Values = std::vector<double>(16);
};

您需要阅读有关向量的信息 - 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;
}

不能在数组上调用方法 resize

我建议你使用像std::vector这样的容器,它允许你这样做:

std::vector<double> Values;