gpt4 book ai didi

c++ - 将数组传递给类函数 C++

转载 作者:行者123 更新时间:2023-11-28 00:11:54 25 4
gpt4 key购买 nike

我有一个组织为

的二维数组
float vertices[3][3]

在我的程序的一个迭代循环中,我在调试器中看到数组是这样填满的:

vertices[0] = {-1, -1, 1}
vertices[1] = {-1, -.5, .5}
vertices[2] = {-.5, -1, .5}

然后我将这三个顶点传递给我的三角形类。

Triangle *t = new Triangle(vertices[0], vertices[1], vertices[2]);
triangles.push_back(*t);

三角形构造函数编码如下:

Triangle::Triangle(float *a, float *b, float *c)
{
memcpy(v1, a, sizeof(a));
memcpy(v2, b, sizeof(b));
memcpy(v3, c, sizeof(c));
}

我的调试器现在显示

v1 = {-1, -431602080, -431602080}
v2 = {-1, -431602080, -431602080}
v3 = {-.5, -431602080, -431602080}

调试器还显示 a/b/c 只有 1 个元素长?那么显然只有数组的第一个元素被传递了?

最佳答案

sizeof(a)

实际上是

sizeof (float*)

这不是 3x float ,它是 1 个指针。传递附加参数 size_t number_of_members_in_array 并替换

memcpy(v1, a, sizeof(a));

memcpy(v1, a, sizeof(*a) * number_of_members_in_array);

Triangle::Triangle(float *a, int numA, float *b, int numB, float *c, int numC)
{
memcpy(v1, a, sizeof(float) * numA);
memcpy(v2, b, sizeof(float) * numB);
memcpy(v3, c, sizeof(float) * numC);
}

关于c++ - 将数组传递给类函数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32578200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com