我知道我应该在类中包含一个"get_Diameter()"函数,以便访问私有数据成员,但我无法弄清楚真正的小数字来自何处.
(可以忽略Rectangle的东西 - 它是一个圆形问题)
这是驱动程序代码:
// classes example
#include <iostream>
using namespace std;
#include "rect2.h"
#include "roughCirc.h"
int main () {
Rectangle rect (3,4);
Rectangle rectb;
cout << "rect area: " << rect.area() << endl;
cout << "rectb area: " << rectb.area() << endl;
cout << " " << endl;
Circle circ (1.3);
cout << "circle area: " << circ.area() << endl;
Circle circB;
cout << "circle area: " << circB.area() << endl;
return 0;
}
/*
g++ -o main2 main2.cpp rect2.cpp roughCirc.cpp
*/
Run Code Online (Sandbox Code Playgroud)
分类:roughCirc.h
class Circle {
double diameter;
public:
Circle (double);
Circle ();
double area (void);
};
Run Code Online (Sandbox Code Playgroud)
和roughCirc.cpp
#include <iostream>
using namespace std;
#include "roughCirc.h"
Circle::Circle (double) {
diameter = 1.1212;
}
Circle::Circle () {
diameter = 32.42;
}
double Circle::area(void) {
double tmp = 3.1416 * 0.25 * diameter*diameter;
cout << "diameter is: " << diameter << " and area is: " << tmp << endl;
}
Run Code Online (Sandbox Code Playgroud)
和输出;
X@X:X$ ./main2
rect area: 12
rectb area: 25
circle area: diameter is: 1.1212 and area is: 0.987318
3.03428e-86
circle area: diameter is: 32.42 and area is: 825.5
3.03428e-86
Run Code Online (Sandbox Code Playgroud)
不确定它是否重要,但我有来自Debian stable的最新最好的软件包.命令行位于驱动程序文件的底部.
您的函数被声明为返回a double
double Circle::area(void) {
double tmp = 3.1416 * 0.25 * diameter*diameter;
cout << "diameter is: " << diameter << " and area is: " << tmp << endl;
}
Run Code Online (Sandbox Code Playgroud)
但是你没有return返回双精度的陈述.所以这一行
cout << "circle area: " << circB.area() << endl;
Run Code Online (Sandbox Code Playgroud)
将在输出时调用未定义的行为.area().相反,您应该返回计算结果
double Circle::area() {
double tmp = 3.1416 * 0.25 * diameter*diameter;
cout << "diameter is: " << diameter << " and area is: " << tmp << endl;
return tmp;
}
Run Code Online (Sandbox Code Playgroud)