あなたがやろうとしていることは一般的に悪いことです。それにはいくつかの主要なポイントがあります:
クラスにカプセル化する場合vector
でも、公開されていれば、外部から通常どおり操作できます。
WavFile WF;
void* Ptr = WF.SoundData.data();
// void* Ptr = &WF.SoundData[0]; - C++03
ベクトルへの呼び出しの一部をラップすることもできます.resize()
。次に例を示します。
void WavFile::resize(vector::size_type new_size) {
SoundData.resize(new_size);
}
void* WavFile::getRawPtr () {
return SoundData.data();
// return (&SoundData[0]); - C++03
}
を使用している場合はstd::vector
、対応するC++読み取り関数も使用する必要があります。メモリ配列として扱うことは有効ですが、たとえばvector
、それを使用するためのより良い方法があります。fstream
カプセル化する場合vector
(またはstd
一般的なコンテナー)は、値で返さないでください。これにより、すべての要素がコピーされます。代わりに、const-referenceをcontainerに返します。さらに良いのは、rangeを返します。