如何使此函数适用于 100 个对象 (c++)?

How can I make this function work for 100 objects(c++)?

本文关键字:c++ 对象 何使此 函数 适用于      更新时间:2023-10-16

所以我有一个程序,可以在每个对象的文本文件中显示数字,问题是原始程序只有 6 个对象,我发现这很容易,但现在我必须更改它才能处理 100 个对象。我尝试使用 for 循环,但它只向我显示了第一个对象。我没有太多编程经验,尝试过其他方法,但没有一种有效。无论如何,这是函数:

void Circle::writeAll(Circle circle[6], int &count) {
if (count == 0) {
cout << "No circles in file. " << endl << endl;
};
if (count == 1 || count == 2 || count == 3 || count == 4 || count == 5 || count == 6) {
cout << " Radius: " << circle[0].getRadius() << "; Center(x): " << circle[0].getCenterx() << "; Center(y): " << circle[0].getCentery() << endl;
};
if (count == 2 || count == 3 || count == 4 || count == 5 || count == 6) {
cout << " Radius: " << circle[1].getRadius() << "; Center(x): " << circle[1].getCenterx() << "; Center(y): " << circle[1].getCentery() << endl;
};
if (count == 3 || count == 4 || count == 5 || count == 6) {
cout << " Radius: " << circle[2].getRadius() << "; Center(x): "  << circle[2].getCenterx() << "; Centery(y): " << circle[2].getCentery() << endl;
};
if (count == 4 || count == 5 || count == 6){
cout << " Radio: " << circle[3].getRadius() << "; Center(x): " << circle[3].getCenterx() << "; Center(y): " << circle[3].getCentery() << endl;  
};
if (count == 5 || count == 6){
cout << " Radius: " << circle[4].getRadius() << "; Center(x): " << circle[4].getCenterx() << "; Center(y): " << circle[4].getCentery() << endl;  
};
if (count == 6){
cout << " Radio: " << circle[5].getRadius() << "; Center(x): " << circle[5].getCenterx() << "; Center(y): " << circle[5].getCentery() << endl;  
};
cout << endl;

};

我会使用像std::vector这样的内置容器类型而不是数组。在这种情况下,它看起来像这样:

void Circle::writeAll(const std::vector<Circle>& circles)
{
size_t size = circles.size();
if (size == 0)
{
cout << "no circles in file" << endl;
return;
}
// print all the circles
for (auto& circle : circles)
{
cout << " Radio: " << circle.getRadius() << "; Center(x): " << circle.getCenterx() << "; Center(y): " << circle.getCentery() << endl;
}
}



在我看来,您正在尝试打印每个对象,直到达到count数。
好吧,这将做同样的事情,但vectorCircle对象。

正如@Josh所说,如果我误解了什么,请随时纠正我。

看起来这就是您要做的:(除非我没有正确解决问题(

void Circle::writeAll(Circle circle[], int &count,int size)
{
for(int i = 0; i <= size; i++)
{
if(count == 0)
cout << "No circles in file. " << endl << endl;
else if(count == i)
cout << " Radius: " << circle[i-1].getRadius() << "; Center(x):"
<< circle[i].getCenterx() << "; Center(y): " << circle[i-1].getCentery() << endl;
}
}

但是,您需要发送size参数 如果解决方案不清楚,请随时发表评论