如何将对象C1设置为输入半径

How do I set object C1 to the input radius?

本文关键字:输入 设置 C1 对象      更新时间:2023-10-16

我制作了一个名为C1和C2的Circle对象。

默认情况下,我使用构造函数将半径设置为0,然后创建一个半径为5的对象C2。

我想输入一个半径,并将C1的半径作为用户输入我可以得到输入,但不确定如何将C1的默认值从0删除到用户输入,所以我的问题是,我该怎么做?我的代码如下

inputRadius=0;因为它会在尝试调用函数时给我一个错误。这消除了那个错误。我主要关心的是获得半径c1的输入来代替默认的0

MAIN:

 double inputRadius = 0;
 Circle C1(0);
 Circle C2(5);
 getRadius(inputRadius);
 Circle C1(inputRadius);

我的头文件如下。

#include <iostream>
using namespace std;
double getRadius(double inputRadius)    {
       cout << "Input the radius for the circle C1 ";
       cin >> inputRadius;
       return inputRadius;    }
class Circle    {
      public:
         Circle(double r)
         {
             setRadius(r);
         }
         void setRadius(double r)
         {
             radius = r;
         }
          double radius;    };

如果更容易的话,我制作了代码的puu.sh链接http://puu.sh/5HC0v.png和http://puu.sh/5HC2o.png

首先,您的函数getRadius很奇怪,您使用它的方式不对。这很奇怪,因为它接受了一些参数,但对它什么都不做。你用错了它,因为它returns什么东西,而你忽略了它。

有一条线:

getRadius(inputRadius)

从控制台读取半径,但它不将其存储在变量中。"inputRadius"是该函数的输入参数。它从函数的外部到内部,而不是相反。(尽管有了指针和引用,你可以有一个双向参数。但你的参数只是一个"双",所以它是单向的。)

将该功能调整为:

double getRadius()
{
   cout << "Input the radius for the circle C1 ";
   double inputRadius; // added, because after removing the parameter
                       // you need some variable at hand to be able to
                       // read from cin
   cin >> inputRadius; // rest is just like you've had it
   return inputRadius;
}

然后调用它并实际存储结果

double newValueOfRadius;
newValueOfRadius = getRadius();

现在,有了一个从控制台读取的半径为的变量,您可以使用它来创建一个新对象:

Circle C1( newValueOfRadius );

或者,您可以设置现有对象的半径

C2.setRadius( newValueOfRadius );

当对象已经cred时,您必须使用set函数来更改半径,因为您不能像在这里那样对已经存在的对象调用构造函数:

//THIS IS WRONG
Circle C1(0);
Circle C1(inputRadius);

代码应该看起来像

class Circle
{
public:
     Circle(double r)
     {
         radius = r;
     }
     void setRadius(double r)
     {
         radius = r;
     }
private:
      double radius;   
};
void main()
{
    Circle C1(0);
    double r = 0;
    cin >> r;
    C1.setRadius(r);
}