C++ “如何修复类函数”;“原型不匹配”;及;cadidate是;错误
我拼命想完成这最后一项作业,我完全不知道这些错误想告诉我做什么。错误如下: “double Rectangle::calculateArea()”的原型与类“Rectangle”中的任何原型都不匹配(第40行) “候选项是:int Rectangle::calculateArea()”(第11行) “double Rectangle::calculatePerimeter()”的原型与类“Rectangle”中的任何原型都不匹配(第45行) “候选项是:int Rectangle::calculatePerimeter()”(第12行) 这是我在这个论坛上的第一篇帖子,所以我为它的格式错误提前道歉 我没有尝试过任何东西,因为我在论坛上找到的解决方案都与我的问题没有直接关系(或者我认为是这样) 多谢各位C++ “如何修复类函数”;“原型不匹配”;及;cadidate是;错误,c++,class,C++,Class,我拼命想完成这最后一项作业,我完全不知道这些错误想告诉我做什么。错误如下: “double Rectangle::calculateArea()”的原型与类“Rectangle”中的任何原型都不匹配(第40行) “候选项是:int Rectangle::calculateArea()”(第11行) “double Rectangle::calculatePerimeter()”的原型与类“Rectangle”中的任何原型都不匹配(第45行) “候选项是:int Rectangle::calcul
// Rectangle.cpp
using namespace std;
class Rectangle
{
public:
void setLength(double length);
void setWidth(double width);
double getLength();
double getWidth();
int calculateArea() {return width*length;}
int calculatePerimeter() {return (width*2) + (length*2);}
private:
double length;
double width;
};
void Rectangle::setLength(double len)
{
len = length;
}
void Rectangle::setWidth(double wid)
{
wid = width;
}
double Rectangle::getLength()
{
return length;
}
double Rectangle::getWidth()
{
return width;
}
double Rectangle::calculateArea()
{
return (width*length)
}
double Rectangle::calculatePerimeter()
{
return ((width*2) + (length*2))
}
您已经在类定义中使用错误的返回类型(int而不是double)定义了函数 然后你在课堂外重新定义了它们
double Rectangle::calculateArea()
{
return (width*length)
}
double Rectangle::calculatePerimeter()
{
return ((width*2) + (length*2))
}
这些函数的定义也不正确
void Rectangle::setLength(double len)
{
len = length;
^^^^^^^^^^^^
}
void Rectangle::setWidth(double wid)
{
wid = width;
^^^^^^^^^^^
}
它们必须被定义为
void Rectangle::setLength(double len)
{
length = len;
}
void Rectangle::setWidth(double wid)
{
width = wid;
}
所有这些功能
double getLength();
double getWidth();
int calculateArea() {return width*length;}
int calculatePerimeter() {return (width*2) + (length*2);}
应使用限定符const声明
double getLength() const;
double getWidth() const;
double calculateArea() const {return width*length;}
^^^^^^
double calculatePerimeter() const {return (width*2) + (length*2);}
^^^^^^
编译器会直接告诉你 上面说这两件事不匹配:
int Rectangle::calculateArea()
double Rectangle::calculateArea()
这是真的。您的退货类型不同
选择一个并一致使用。函数在声明(类定义内)和定义中具有不同的返回类型。它们有两个定义,一个在类定义中,另一个在类定义之外。你还没有解释代码应该做什么。@VladFrommosco是的。“为什么?”梅尔波梅对我来说,这看起来很奇怪。只有一个类定义,没有其他定义。
int Rectangle::calculateArea()
double Rectangle::calculateArea()