如果...
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 =
谢谢。
答案 0 :(得分:1)
如果temp
确实是您定义的vec3
,则myVec4
的两个构造函数都是非法的,因为它们在前两个参数中包含足够的组件来初始化整个vec4
。
答案 1 :(得分:1)
我会想出这样的东西,假设它编译并运行,它使用调试器或printf来查看你得到的东西。
在我的xode 3.2.x上 - 它没有编译。实际上vec2 myVec2 = vec2(myVec3);
也没有编译。
另外:最后一行有一个错误,当你阅读它时有意义。
code.mm:73:0 code.mm:73:错误:没有匹配的函数来调用 '
Vector4<float>::Vector4(vec3&, vec2&, double)
'
我总是发现C ++的构造函数规则非常复杂。让编译器像它一样告诉它。