Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使此函数适用于100个对象(c++)?_C++ - Fatal编程技术网

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

如何使此函数适用于100个对象(c++)?,c++,C++,所以我有一个程序,在文本文件中显示每个对象的数字,问题是原来的程序只有6个对象,我发现preety很容易,但现在我不得不把它改为处理100个对象。我尝试使用for循环,但它只显示了第一个对象。我没有太多编程经验,也尝试过其他方法,但都不管用。不管怎样,函数如下: void Circle::writeAll(Circle circle[6], int &count) { if (count == 0) { cout << "No circles in file. " &

所以我有一个程序,在文本文件中显示每个对象的数字,问题是原来的程序只有6个对象,我发现preety很容易,但现在我不得不把它改为处理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;

})

看起来这就是你想要做的:除非我没有把问题解决好

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;
    }
}
但是,您需要发送一个大小参数
如果解决方案不清楚,请随意评论,而不是使用数组,我将使用内置容器类型,如std::vector。在这种情况下,它将如下所示:

无效圆::writeAllconst标准::向量和圆 { 大小=圆圈大小; 如果大小==0 {
为什么圆圈对象要用一个圆容器?所以,我做了,它工作得很好,但唯一的问题是如果我在菜单上使用两个相同的选项,它显示圆的半径和其他值为0。也许有一个简单的方法来修复它,但是,我又一个新的C++,所以我不知道如何解决它。