【发布时间】:2021-12-31 03:42:16
【问题描述】:
我目前正在为将被绘制到屏幕上的多边形编写一个类。然而,我的问题是,我无法弄清楚如何从数组数组(对于每个顶点的 x 和 y 保存整数)创建一个结构数组。我通过构造函数传递这个数组。我认为我的错误与尝试将指针作为整数传递有关,尽管经过危险的研究,我似乎无法弄清楚如何解决我的错误。我来自动态类型语言(主要是 Js 和 Python)的背景,这是我第一个使用静态类型语言的大型项目。非常感谢任何帮助。
struct Point {
int x , y;
};
class Polygon
{
private:
Point centre;
Polygon(int x, int y, int vertices[]) {
centre = {x, y};
struct Point points[sizeof(vertices)/sizeof(vertices[0])] = {vertices};
}
//etc....
};
//Example of how it will be called in main.cpp
int main{
Polygon polygon(0, 0, {{5,5}, {-5,5}, {5,-5}, {-5,-5}} );
}
【问题讨论】:
-
根据你想如何称呼它看起来你想要一个
std::initializer_list<Point>作为第三个参数 -
然而,代码中还有很多其他问题,例如构造函数是私有的,并且
struct Point vertices[sizeof(vertices)] = {vertices};行在 C++ 中没有任何意义(并且不会编译,因为您对两个不同的事物使用相同的变量名) -
sizeof(vertices)没有给你元素的数量。其次,VLA 不是标准的 C++。第三,使用向量。 -
如果 VLA 在 C++ 中不是标准的,你会建议我如何解决我的问题? @ChrisMM
-
那就是“使用向量”部分。