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

时间:2013-12-09 22:30:00

标签: c++ class object

我制作了一个名为C1和C2的圆形物体。

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

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

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.pnghttp://puu.sh/5HC2o.png

3 个答案:

答案 0 :(得分:2)

首先,如果全部,您的函数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 );

答案 1 :(得分:-1)

您必须使用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);
}

答案 2 :(得分:-1)

立即以正确的半径创建C1

double inputRadius = 0;
getRadius(inputRadius);

Circle C1(inputRadius);
Circle C2(5);