我正拼命地完成最后的任务,而这些错误试图告诉我做些什么我完全不知所措。错误是这样的:
“'double Rectangle :: calculateArea()'的原型与类'Rectangle'中的任何原型都不匹配”(第40行)
“候选人是:int Rectangle :: calculateArea()”(第11行)
“'double Rectangle :: calculatePerimeter()'的原型与类'Rectangle'中的任何原型都不匹配”(第45行)
“候选人为:int Rectangle :: calculatePerimeter()”(第12行)
这是我在该论坛上的第一篇帖子,因此我对格式不正确表示歉意
我没有尝试任何事情,因为在论坛上找到的解决方案均与我的问题没有直接关系(或者我认为)。
谢谢
// 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))
}
答案 0 :(得分:3)
您已经用错误的返回类型(int而不是double)在类定义中定义了函数
class Rectangle
{
//...
int calculateArea() {return width*length;}
int calculatePerimeter() {return (width*2) + (length*2);}
//..
};
然后您在课外重新定义了它们
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);}
^^^^^^
答案 1 :(得分:0)
编译器从字面上告诉您!
它说这两件事不匹配:
int Rectangle::calculateArea()
double Rectangle::calculateArea()
而且,是的。您的退货类型有所不同。
选择一个并持续使用它。