-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

ベクトルについて読む必要があります - 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 に答える
0

resize配列に対してメソッドを呼び出すことはできません。

それを可能にするようなコンテナを使用することをお勧めしますstd::vector

std::vector<double> Values;
于 2013-09-15T11:31:30.887 に答える