c++ - 如何灵活地使用 c++ 结构数组?
问题描述
想灵活使用结构体数组怎么办?我编写了如下所示的代码,并尝试了三角形和矩形。三角形是成功的,但是当我尝试矩形时,我收到了错误消息。
struct C2D {
double x, y;
};
class Polygon {
int point;
std::vector<C2D> arr;
public:
Polygon(int point_, C2D arr_[]) : arr(point_) {
point = point_;
memcpy(arr.data(), arr_, sizeof(C2D) * point);
};
void print() const {
for (int i = 0; i < point; i++) {
cout << arr[i].x << " " << arr[i].y << endl;
}
};
};
int main() {
int point;
C2D c2d[3];
cout << "point : ";
cin >> point;
cout << endl;
vector<C2D>c2d(point);
for (int i = 0; i < point; i++) {
cout << i + 1 << "x : ";
cin >> c2d[i].x;
cout << i + 1 << "y : ";
cin >> c2d[i].y;
cout << endl;
}
cout << endl;
Polygon p(point, c2d);
p.print();
return 0;
}
解决方案
根据您的代码,您声明的变量名 c2d 一个是 C2D 数组类型,另一个是 C2D 的向量,两个变量名的用途与您声明的相同。我的建议是根据点数分配 c2d 变量并传递给多边形。根据我的理解,使用参数数组或向量更改您的多边形构造函数,并将相应的参数传递给构造函数。
推荐阅读
- android - Firebase 没有为 Release 构建变体采用相同的包名称
- azure-powershell - 查找当前登录的用户名 Azure PowerShell (cloudshell)
- javascript - 当另一个 div 向下滑动时,我如何才能向上滑动一个 div
- c# - 为什么我会收到错误消息“立方体不存在或尚未处理。'
- c# - 团队基础在 RestSharp 和 NewtonSoft 上构建错误
- r - ggplot2 在函数中不起作用,但在外部起作用
- gitlab - 如何在gitlab中有条件地执行阶段
- css - 如何修改 firebase 为我提供的身份验证按钮的默认 css / 样式?
- c - 如何将 lsusb 设备的结果链接到 /dev/ttyUSB*
- java - Whitelabel 错误页面 - Spring Boot 应用程序中的错误