私は(基本的に)std :: vector(そのD3D10レンダリング)のSetterメソッドを作成しようとしています
void GraphicsClass::BeginFrame(vector<LightClass> const &vlights)
{
lights = vlights;
ここで、lightsはGraphicsClassのプライベートメンバーであり、宣言は次のとおりです。
vector<LightClass> lights;
これで、配列のプロパティがコピーされます。しかし、要素lights[0], lights[1]
などにはゴミが含まれています。VisualStudioデバッガーを使用してこれを確認しました。
私は明らかに使用することで回避できました
void GraphicsClass::BeginFrame(vector<LightClass> const &vlights) {
int size = vlights.size();
int i;
lights.resize(size);
for (i = 0; i < size; i++)
lights[i] = vlights[i];
しかし、私はこのトピックを理解していないのが好きではなく、このコードは少し遅いようです。
回答ありがとうございます!
要求に応じたLightClass:
class LightClass
{
public:
LightClass(void);
~LightClass(void);
void SetDiffuseColor(float, float, float, float);
void SetDirection(float, float, float);
D3DXVECTOR4 GetDiffuseColor();
D3DXVECTOR3 GetDirection();
private:
D3DXVECTOR4 m_diffuseColor;
D3DXVECTOR3 m_direction;
};
コンストラクタとデストラクタの両方が空であるため、これは間違いです(Type * thingのようにポインタを作成するだけのクラスからこれをコピーしました。OOPは初めてです)
私はおそらくベクトルをベクトルに変更します。
(回避策のように)LightClass
だけでなく、のコピーコンストラクターを実装する必要がありoperator=
ます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加