#include <iostream> using namespace std; class Box { double width; double height; double depth; public: void printArea(Box box){}; void inputBox(){ double x,y,z; cin>>x>>y>>z; width=x; height=y; depth=z; } double printInfo(){ cout<<"The size of box:("<<width<<","<<height<<","<<depth<<")"<<endl; } }; void printArea(Box box) { cout<<box.width*box.height*box.depth; } // 程序的主函数 int main( ) { Box box; box.inputBox(); box.printInfo(); cout<<'\n'; printArea( box );// 输出体积 return 0; }哪错了
时间: 2023-08-08 15:05:45 浏览: 91
这段代码中存在几个错误:
1. `printArea` 函数定义在 `Box` 类的外部,但是在 `Box` 类内部声明了一次,这会导致编译器无法确定应该使用哪个函数定义。
2. `printArea` 函数不应该接受一个 `Box` 类型的参数,因为它只需要计算盒子的体积,而不需要使用盒子的其他属性。应该将其改为接受三个 `double` 类型的参数。
3. `printInfo` 函数没有返回值,但是它的返回类型被声明为 `double`,这会导致编译错误。
以下是修改后的代码:
```c++
#include <iostream>
using namespace std;
class Box {
double width;
double height;
double depth;
public:
void printInfo() { // 修改返回类型为 void
cout << "The size of box:(" << width << "," << height << "," << depth << ")" << endl;
}
void inputBox() { // 修改函数名为小写字母开头的驼峰命名法
double x, y, z;
cin >> x >> y >> z;
width = x;
height = y;
depth = z;
}
double getVolume() { // 修改函数名为更符合语义的 getVolume
return width * height * depth;
}
};
void printVolume(double width, double height, double depth) { // 修改函数参数为三个 double 类型
cout << width * height * depth;
}
int main() {
Box box;
box.inputBox();
box.printInfo();
cout << '\n';
printVolume(box.width, box.height, box.depth); // 调用修改后的函数
return 0;
}
```
阅读全文