函数调用C++中的参数太少
Too few arguments in function call C++
你好,我是一名学习 c++ 的学生,我刚刚开始学习 OOP。问题出在我的主文件中,但是我正在显示我的所有文件,以防它来自另一个文件。
我已经编写了我的 hpp 和 cpp 文件,现在我只是在做我的主要测试。该类称为 Box,当我创建一个对象 box1 或 box 2 并尝试访问我的函数时,它说有两个参数。无论我把box1.calcVolume(double h,double w,double l(还是box1.calcVolume(
(;所以问题出
在以下几行:double volume2 = box2.calcVolume();
double volume1 = box1.calcVolume();
double surfaceArea1 = box1.calcSurfaceArea();
如果有人能发现我可能不理解的东西,请告诉我。
这是头文件:
#pragma once
#include <iostream>
#ifndef BOX_HPP
#define BOX_HPP
class Box
{
private:
double height;
double width;
double length;
public:
void setHeight(double h);
void setWidth(double w);
void setLength(double l);
double calcVolume(double h, double w, double l);
double calcSurfaceArea(double h, double w, double l);
Box();
Box(double height, double width, double length);
};
#endif
这是 CPP 文件
#include <iostream>
#include "Box.hpp"
Box::Box()
{
setHeight(1);
setWidth(1);
setLength(1);
}
Box::Box(double h, double w, double l)
{
setHeight(h);
setWidth(w);
setLength(l);
}
void Box::setHeight(double h)
{
height = h;
}
void Box::setWidth(double w)
{
width = w;
}
void Box::setLength(double l)
{
length = l;
}
double Box::calcVolume(double h, double w, double l)
{
double volume;
volume = h * w * l;
return volume;
}
double Box::calcSurfaceArea(double h, double w, double l)
{
double surfaceArea;
surfaceArea = 2 * (h*w) + 2 * (h*l) + 2 * (l*w);
return surfaceArea;
}
我的盒子主文件:
#include <iostream>
#include "Box.hpp"
using std::cout;
using std::cin;
using std::endl;
int main()
{
Box box1(1.1, 2.4, 3.8);
Box box2;
box2.setHeight(12);
box2.setWidth(22.3);
box2.setLength(2.3);
double volume2 = box2.calcVolume();
double volume1 = box1.calcVolume();
double surfaceArea1 = box1.calcSurfaceArea();
cout << box1.calcVolume(); << endl; //testing different methods
return 0;
}
您的方法采用三个参数:
double Box::calcVolume(double h, double w, double l)
{
double volume;
volume = h * w * l;
return volume;
}
所以,你会这样称呼它:
Box b;
double volume = b.calcVolume(1, 2, 3);
但这并不完全正确。Box
的实例知道它有多大,因为您将大小传递给构造函数,构造函数将大小存储在字段中width
、height
和length
中。你可能想要这样的东西:
double Box::calcVolume()
{
volume = height * width * length;
return volume;
}
你的代码是错误的。框的尺寸在创建框对象期间是已知的。长度、宽度和高度已经可用 - 在成员变量中更新。
函数calcVolume
和calcSurfaceArea
不应接受参数,而应返回计算值。修改后的代码如下:
double Box::calcVolume()
{
return height*width*length;
}
double Box::calcSurfaceArea()
{
return 2*((height*width) + (height*length) + (length*width));
}
另外,请记住使用与上述代码对应的声明修改 .hpp 文件。
.hpp 文件中的声明应为
double calcVolume();
double calcSurfaceArea();
我已经解决了这个问题。我在代码中随处删除了calcVolume和calcSurfaceArea中的参数,它解决了错误。
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 使用不带参数的函数访问结构元素
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何使用Luacneneneba API正确读取字符串和表参数
- 在派生函数中指定void*参数
- 视图中的参数推导失败:take_while
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 使用指向成员的指针将成员函数作为参数传递
- 没有名称的C++模板参数
- 如何将enable-if与模板参数和参数包一起使用