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

我想出这样的东西的方式,假设它编译并运行,它使用调试器或 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 回答
1

如果temp确实是vec3您定义的 a ,则 for 的两个构造函数myVec4都是非法的,因为它们在前两个参数中都包含足够的组件来初始化整个vec4.

于 2010-09-06T17:26:58.493 回答