- 締切済み
DirectXのD3DXVECTOR3
directxでのCDに書いてあるこのソースの一部の事で質問します。 D3DXVECTOR3 mVecDir; mVecDir = D3DXVECTOR3( -0.5f, -0.5f, 1.0f); --------------------------------------------------------------- D3DXVECTOR3をDirectX SDK October 2004で調べたのですが、 typedef struct D3DXVECTOR3 : public D3DVECTOR { public: D3DXVECTOR3() {}; D3DXVECTOR3( CONST FLOAT * ); D3DXVECTOR3( CONST D3DVECTOR& ); D3DXVECTOR3( CONST D3DXFLOAT16 * ); D3DXVECTOR3( FLOAT x, FLOAT y, FLOAT z ); // 型変換 operator FLOAT* (); operator CONST FLOAT* () const; // 代入演算子 D3DXVECTOR3& operator += ( CONST D3DXVECTOR3& ); D3DXVECTOR3& operator -= ( CONST D3DXVECTOR3& ); D3DXVECTOR3& operator *= ( FLOAT ); D3DXVECTOR3& operator /= ( FLOAT ); // 単項演算子 D3DXVECTOR3 operator + () const; D3DXVECTOR3 operator - () const; // 2 項演算子 D3DXVECTOR3 operator + ( CONST D3DXVECTOR3& ) const; D3DXVECTOR3 operator - ( CONST D3DXVECTOR3& ) const; D3DXVECTOR3 operator * ( FLOAT ) const; D3DXVECTOR3 operator / ( FLOAT ) const; friend D3DXVECTOR3 operator * ( FLOAT, CONST struct D3DXVECTOR3& ); BOOL operator == ( CONST D3DXVECTOR3& ) const; BOOL operator != ( CONST D3DXVECTOR3& ) const; } D3DXVECTOR3, *LPD3DXVECTOR3; これを自分が見た限り、戻り値がないと思います。 何故、mVecDir = D3DXVECTOR3( -0.5f, -0.5f, 1.0f);のD3DXVECTOR3は戻り値があるのでしょうか? ちなみに、質問のソース2行はD3DXVECTOR3 mVecDir( -0.5f, -0.5f, 1.0f);でもOKですよね? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- bluecampus
- ベストアンサー率66% (138/209)
初期化時と代入時でoperator = が呼ばれない時もあります。 (D3DXVECTOR3 mVecDir( -0.5f, -0.5f, 1.0f); と D3DXVECTOR3 mVecDir = D3DXVECTOR3 ( -0.5f, -0.5f, 1.0f); は同等) 手抜きサンプル) #include <iostream> struct hoge { int x, y, z; hoge(int x, int y, int z) { std::cout << "\t1" << std::endl; } hoge& operator = (const hoge& h) { std::cout << "\t2" << std::endl; return *this; } }; int main() { std::cout << "a" << std::endl; hoge h = hoge(1, 2, 3); std::cout << "b" << std::endl; h = hoge(1, 2, 3); }
- machongola
- ベストアンサー率60% (434/720)
こんにちは。 >>何故、mVecDir = D3DXVECTOR3( -0.5f, -0.5f, 1.0f);のD3DXVECTOR3は戻り値があるのでしょうか? 其れは、恐らく代入演算子が起動している思います。 D3DXVECTOR3& operator = (const D3DVECTOR3& r); 書いていない場合は自動的に作成されている筈だと思います。 >>ちなみに、質問のソース2行はD3DXVECTOR3 mVecDir( -0.5f, -0.5f, 1.0f);でもOKですよね? はい。
お礼
ありがとうございました。