该区域始终输出“0”。我无法想象如何在int r
中计算区域。
// Define a class and use it to test out some math stuff
#include <iostream>
#include <cmath>
using namespace std;
class Circle {
public:
// function that calculates the area of a circle
float circle_area(int r) {
area = 3.14 * (r*r);
return area;
} // end function circle_area
void display_msg() {
cout << "Area: " << circle_area(r) << endl;
} // end function display_msg
private:
float area;
int r;
}; // end class Circle
int main(void) {
int r;
Circle circle_calc; // create a Circle object named circle_calc
cout << "Radius of circle: ";
cin >> r;
circle_calc.display_msg();
}
答案 0 :(得分:7)
永远不会设置成员变量Circle::r
,r
中的局部变量main()
是通过cin
设置的,但从未使用过。
这样的事情可能是你想要的:
class Circle {
public:
Circle(int a_radius) : r(a_radius) {}
// function that calculates the area of a circle
float circle_area(int r) {
area = 3.14 * (r*r);
return area;
} // end function circle_area
void display_msg() {
cout << "Area: " << circle_area(r) << endl;
} // end function display_msg
private:
float area;
int r;
}; // end class Circle
int main(void) {
int r;
cout << "Radius of circle: ";
cin >> r;
Circle circle_calc(r);
circle_calc.display_msg();
}
int r
中声明的变量main()
与类r
中的成员变量Circle
无关,即使它们具有相同的名称:它们是两个不同的变量
编辑:
进一步完善课程Circle
:
class Circle {
public:
// Constructor.
Circle(int a_radius) : r(a_radius) {}
// function that calculates the area of a circle
float circle_area() { return 3.14 * r * r; }
void display_msg() {
cout << "Area: " << circle_area() << endl;
}
private:
int r;
}; // end class Circle
的变化:
area
不需要是成员变量(如Fred Larson所述)r
不需要传递给circle_area()
成员函数,因为r
是成员变量,因此circle_area()
可以访问它