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

标签 c++ arrays function class

我有一个组织为

的二维数组
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/

相关文章:

c++ - 为什么fstream不是继承自c++中的ifstream和ofstream?

C++ 如何在两个不同项目中的静态变量之间发生链接

python - 从一系列数字生成二进制数据数组

arrays - Matlab 是否接受非整数索引?

javascript - $ ('element' ).show();对比 $ ('element' ).css ('visibility' , 'visible' ) : which is better to use?

c++ JsonCpp将带有转义引号的字符串解析为数组

c++ Delete 像 QObject 一样从基类派生

c# - 使用单循环在数组中查找重复项

c++ - 为什么尽管我的函数和 cout 语句放置错误,我的程序仍能运行?

language-agnostic - 使用大量参数的缺点