directxでのCDに書いてあるこのソースの一部の事で質問します。
D3DXVECTOR3mVecDir;
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行はD3DXVECTOR3mVecDir( -0.5f, -0.5f, 1.0f);でもOKですよね?
よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
初期化時と代入時で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);
}
No.1
- 回答日時:
こんにちは。
>>何故、mVecDir = D3DXVECTOR3( -0.5f, -0.5f, 1.0f);のD3DXVECTOR3は戻り値があるのでしょうか?
其れは、恐らく代入演算子が起動している思います。
D3DXVECTOR3& operator = (const D3DVECTOR3& r);
書いていない場合は自動的に作成されている筈だと思います。
>>ちなみに、質問のソース2行はD3DXVECTOR3 mVecDir( -0.5f, -0.5f, 1.0f);でもOKですよね?
はい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) C3とC4のセルに、Visual basicで実行した時入力した値をC3に表示させ、その後に、C3に 1 2023/07/14 09:43
- Excel(エクセル) エクセルのオートフィルについて質問があります。 2 2022/04/08 22:31
- フリーソフト パソコンで、フォルダの最下層を探索してフォルダ名に連番を挿入するアプリを探しています。 例: アルフ 2 2023/06/09 22:04
- その他(Microsoft Office) エクセルのマクロでスライサー教えてください。 1 2022/09/28 16:40
- Excel(エクセル) [オートフィルター]機能について 3 2023/02/04 14:32
- 車検・修理・メンテナンス ATFのD3相当で緑色って、 どのメーカーがありますかね? 1 2022/10/05 00:08
- Excel(エクセル) エクセル2019の関数を教えてください。 8 2022/12/16 12:45
- Excel(エクセル) 式で与えられたセルの値と固定の文字列を一つのセルに表示 2 2022/12/28 11:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
空ENTERの判別
-
C言語のポインターで詰まっている
-
C++での <iostream.h>と<iostre...
-
constexprについて
-
VC++で文字列から任意の文字を...
-
enumの値から定義名を文字列化...
-
名前空間でビルドエラー(LNK20...
-
VxWorks 6.4ソケット接続につい...
-
[Win + Eclipse + GCC]socketク...
-
VS2019でofstreamが未定義になる
-
構文エラーが出ているのですが...
-
DLLでダイアログ
-
セグメンテーションフォルトが...
-
wstringの主力
-
c++で、cvMatからvectorへの変...
-
EOFにならない?
-
c++のvirtual関数および継承に...
-
switch文のエラーについて
-
C++で縦の棒グラフ
-
STL string::findで見つからな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
enumの値から定義名を文字列化...
-
VC++で文字列から任意の文字を...
-
C言語 ストリームについて。
-
switch文のエラーについて
-
string型のフォーマット書式指...
-
構文エラーが出ているのですが...
-
空ENTERの判別
-
gccでコンパイル時のエラー
-
なぜ、C++の標準ヘッダをインク...
-
リモートデスクトップの接続元I...
-
JPEGやPNGが読めるLoadImage関数
-
mapの初期化
-
snprintfが使用できない。
-
atlbase.h と afxwin.hの同時定義
-
C言語のエラーを修正したい
-
CSting を TCHAR [] に変換した...
-
#include "fstream.h"
-
構造体配列のvectorへの変換と...
-
【C++】ヘッダ内でstringを格納...
-
CStringとString
おすすめ情報