所以我有一个顶点数组,我试图用文件中的数据填充数组。
现在我的代码如下所示:
int VertexCount = Input.get();
MVertex Vertices[4] =
{
{0.0f, 0.0f, 0.0f,},
{1.0f, 0.0f, 1.0f,},
{0.0f, 0.0f, 1.0f,},
{1.0f, 0.0f, 0.0f,},
};
现在它工作得很好,除了使用VertexCount初始化数组的大小,但我想得到它,这取决于顶点数我需要一个for循环来为我填充数据。我想保持相同的数组格式,因为由于某种原因,它不会以任何其他方式工作,但像这样。我正在思考以下几点:
int VertexCount = Input.get();
MVertex Vertices[VertexCount] =
{
for (int i = 0; i < VertexCount; i++)
{
{Input.get(), Input.get(), Input.get(),},
}
};
但这不起作用我只是得到一些语法错误。有人可以告诉我怎么写吗?
答案 0 :(得分:2)
你试图一次做太多事情。您需要将其分解为两个步骤:
声明数组并分配数组:
int VertexCount = Input.get();
MVertex* Vertices = new MVertex[VertexCount];
初始化数组的元素:
for (int i = 0; i < VertexCount; i++)
{
MVertex v;
v.x = Input.get();
v.y = Input.get();
v.z = Input.get();
Vertices[i] = v;
}
请注意,我分别创建了MVertex
对象。在我看来,这使您的代码的意图更加清晰。它还可以帮助您编写代码,因为您一次只关注一件事,而不是尝试使用更复杂的语法一次完成几个步骤。
我还假设MVertex
中的三个字段名为x
,y
和z
;适当地改变这些。
由于此代码分配了一个动态数组,因此当您使用语句
完成后,必须释放已分配的内存。delete[] Vertices;
答案 1 :(得分:-1)
要创建可变大小的数组,请使用new运算符
MVertex* Vertices = new MVertex Vertices[VertexCount];
在堆上创建数组(并记得稍后删除它),或者使用像std :: vector这样的STL容器。