如何使此函数适用于 100 个对象 (c++)?
How can I make this function work for 100 objects(c++)?
所以我有一个程序,可以在每个对象的文本文件中显示数字,问题是原始程序只有 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
数。
好吧,这将做同样的事情,但vector
Circle
对象。
正如@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
参数 如果解决方案不清楚,请随时发表评论
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 代理对象的常量正确性
- 提升 ASIO 无法识别计时器对象
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 如何返回一个类的两个对象相加的结果
- 使用std::函数映射对象方法
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 构造对象的歧义
- 使用"std::unordereded_map"映射到"std::list"对象