0

もしも...

vec3 myVec3 = vec3(1.0, 0.0, 0.5); // myVec3 = {1.0, 0.0, 0.5}
vec3 temp = vec3(myVec3); // temp = myVec3
vec2 myVec2 = vec2(myVec3); // myVec2 = {myVec3.x, myVec3.y}

myVec4 = vec4(myVec2, temp, 0.0); // myVec4 = {myVec2.x, myVec2.y, temp.x, 0.0}

では、以下は何を表しているでしょうか?

myVec4 = vec4(temp, myVec2, 0.0); // myVec4 =

ありがとう 。

4

2 に答える 2

1

tempが実際に定義したとおりの場合vec3、のコンストラクターはmyVec4両方とも不正です。どちらも最初の2つの引数に、全体を初期化するのに十分なコンポーネントが含まれているためvec4です。

于 2010-09-06T17:26:58.493 に答える
1

そのようなものを理解する方法は、コンパイルして実行すると仮定して、デバッガーまたは printf を使用して何が得られるかを確認することです。

私のxode 3.2.xでは、コンパイルされません。実際vec2 myVec2 = vec2(myVec3);にはコンパイルもされません。

また、最後の行には、それを読むと意味のあるエラーがあります。

code.mm:73:0 code.mm:73: エラー: ' Vector4<float>::Vector4(vec3&, vec2&, double)' の呼び出しに一致する関数がありません

私はいつも、C++ のコンストラクター規則が非常に複雑であることを発見しました。コンパイラにそのまま伝えさせます。

于 2010-09-06T17:55:39.670 に答える