【发布时间】:2021-05-05 10:59:22
【问题描述】:
#include <iostream>
using namespace std;
class Circle
{
private:
double radius;
public:
Circle() //Constructor
{ radius = 0; }
Circle(double); //Parameterized Constructor
void setRadius(double);
double getRadius() const
{ return radius; }
double getArea() const
{ return 3.14 * radius * radius; }
};
Circle::Circle(double r)
{
radius = r;
}
void Circle::setRadius(double r)
{
radius = r;
}
int main()
{
int size = 3; //Set size of array of objects
Circle arr[size] = { Circle(1.2), Circle(2.2), Circle(5.5) }; //Array of Objects
for (int index = 0; index < size; index++)
{
cout << arr[index].Circle(); //Error: Invalid use of Circle::Circle
}
Circle b(2.8); //Instance of class
cout << b.getRadius(); //Prints out the radius of object
Circle c; //Another instance
cout << endl << c.getRadius(); //Another radius
double r; //Variable to store the radius based on user input
cout << "\nEnter a radius: ";
cin >> r;
c.setRadius(r); //Pass user input into radius member function
cout << c.getRadius(); //Print new radius of object c
cout << endl << c.getArea(); //Prints area of object c.
return 0;
}
我试图弄清楚如何使用类参数化构造函数打印出上述对象数组的值(它应该打印出每个 Circle 对象的半径)。运行程序时,我得到的错误是invalid use of Circle::Circle。
【问题讨论】:
-
你必须要么实现一个getter函数,要么实现一个打印操作符。
-
在你的 for 循环中将
cout << arr[index].Circle();更改为cout << arr[index].getRadius() << endl; -
感谢大家的快速回复!
标签: c++ arrays class object parameters