我制作了一个名为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.png和http://puu.sh/5HC2o.png
答案 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);