2011-06-30 6 views
1

私はGame Coding Completeを読んでいて、2つの機能を持つように提案しています.1つは通常のinit()呼び出しであり、もう1つはストリームを受け取ることです。それはそれについての詳細の多くに入ることはありません、そして、私はちょっと混乱してしまいました。ストリームを使ってC++オブジェクトを初期化する

class AnimatinPath 
{ 
public: 
    AnimationPath(); 
    Initialize(std::vector<AnimationPathPoints> const & srcPath); 
    Initialize(InputStream & stream); 
    // ... 
}; 

これは、ディスク、メモリまたはネットワーク経由でinitオブジェクトを実行できると言います。

ストリームとは何ですか?私は約2年間C++を使ってきましたが、streamの私の唯一の経験はiostreamです。これは私が使用できるオブジェクトのバイナリ出力を持つことを示唆していますか?

オブジェクトを作成するときに、構文がもう一方の端をどのように見えるか。

ありがとうございました。

+1

['init'関数を使わないでください](http://stackoverflow.com/q/6471136/277176)、これは何のためのコンストラクタです。 – ybungalobill

+0

これは本の例です。私はinit関数を使用して、必要なオブジェクトを作成し、ディスクを叩くことなく簡単にリサイクルすることができ、ゲームの実行中に多くのオブジェクトを作成すると、そうでなければフレームレートが低下します。 –

+0

@ybungalobill 'larsmans'この記事では、工場を使用することが例外であることを示唆しています。ほとんどのゲームオブジェクトは工場からのものであるため、例外です。 –

答えて

1

「ストリーム」は実際には重要ではありません。

第2のinitストリームパラメータを持つ関数は、オブジェクトの直列化を意味します。

は、このSOポストを見てみましょう:How do you serialize an object in C++?

あなたはより多くの情報については、「オブジェクト直列化」のためのgoogleことができます。

0

この他のinitは、ストリームからオブジェクトを構築するためのものです:ディスクファイル、ネットワークデータなどAnimationPathの場合は、ファイルを定義してこのメ​​ソッドを使用してデータをロードできます。

+0

はいゲームコーディングはMike McShaffry(完成したスコットランドの名前のように聞こえる) –

関連する問題