リソース内のデータは、readを使用してfistreamから読み込まれ、readはchar配列を取ります。これをベクターに格納します。データへのcharポインタが必要ですが、例えば。私が頂点バッファのバウンディングボックスを計算する必要があるなら、私はフロートとしてデータを持っている必要があります。これを行うにはいい方法ですか?代わりにGetDataChar()のベクトルへの参照を返す必要がありますか?ファイルから読み取られたcharベクトルデータへのfloatポインタの返却
class Resource
{
protected:
const std::vector<char>& GetDataRef() const
{
return m_data;
}
private:
std::vector<char> m_data;
}
class VertexBuffer : public Resource
{
public:
const char* GetDataChar() const
{
return &GetDataRef()[0];
}
const float* GetDataFloat() const
{
return reinterpret_cast<float*>(&GetDataRef()[0]);
}
}
class IndexBuffer : public Resource
{
public:
const char* GetDataChar() const
{
return &GetDataRef()[0];
}
const int* GetDataInt() const
{
return reinterpret_cast<int*>(&GetDataRef()[0]);
}
}
Hmm ..私はあなたの答えを数回読んだことがありますが、私はそれを得ません:私は私が使用するデータを読むとき:m_data.resize(ファイルサイズ); filestream.read(&m_data [0]、fileSize);私は静かないくつかの場所でこれを行って見ました.. – bitgregor
例としていくつかのコードを書くことができますか? – bitgregor
短いバージョン:書式の異なるバイナリI/Oを別の方法で使用することはできません。フォーマットされていないバイナリI/Oが唯一のオプションである場合は、オブジェクトが正しく整列されていることを確認してください。 'std :: vector'の 'char'の配列は正しく整列されないようにします。あなたが理解できないという言葉で話したら、私は強く**あなたには書式なしのバイナリI/Oを使わない**をお勧めします!あなたはこの答えがほしいとは思っていなかったかもしれないが、「それは働いている」と言っている可能性が非常に高いです。あなたが得られない部分を明らかにすれば、私は説明することができます。 –