我正在尝试在辅助函数中将浮点数组转换为glm向量。不幸的是,返回值被破坏了:
extension UIColor {
@objc class var myGolden: UIColor {
return UIColor(red: 1.000, green: 0.894, blue: 0.541, alpha: 0.9)
}
}
print(UIColor.myGolden)
class MyUIColor: UIColor {
override class var myGolden: UIColor {
return UIColor(red: 1.000, green: 0.894, blue: 0.541, alpha: 0.75)
}
}
print(MyUIColor.myGolden)
我希望以下代码在函数中的堆栈上分配arr: 1, 1, 0
fn.arr: 1, 1, 0
fn.vec: 1, 1, 0
vec: 4.7468e-11, 4.55856e-41, 1
,然后将其作为值返回。
vec
从上面的输出来看,情况似乎并非如此。由于最后的输出显示随机垃圾,因此必须在分配值。也许由于某些原因未复制// main.cpp
float colour[3] = {1.0f, 1.0f, 0.0f};
std::cout << "arr: " << colour[0] << ", " << colour[1] << ", " << colour[2] << std::endl;
glm::vec3 c = arr_to_vec3(colour);
std::cout << "vec: " << c.x << ", " << c.y << ", " << c.z << std::endl;
// util.cpp
glm::vec3 arr_to_vec3(float arr[3]) {
std::cout << "fn.arr: " << arr[0] << ", " << arr[1] << ", " << arr[2] << std::endl;
glm::vec3 vec = glm::vec3(arr[0], arr[1], arr[2]);
std::cout << "fn.vec: " << vec.x << ", " << vec.y << ", " << vec.z << std::endl;
return vec;
}
,并且返回的矢量指向float
的堆栈帧?对我来说,data如何存储在向量中以及应用什么语义上还不是很清楚。
奇怪的是,如果我仅将这两个代码块复制到一个空项目中(可能不是偶然清除那里的内存),我将无法复制。