hur.cn - 华软网

 热门搜索

function does not take 0 parameters错误要怎么解决啊?

  作者:未知    来源:网络    更新时间:2011/4/16
if (quad->name == "Rectangle")
{
Rectangle *p = reinterpret_cast<Rectangle *>(quad);
p->draw();
cout << "area = " << p->area() << endl;
}   编译时查错为: error C2660: 'area' : function does not take 0 parameters ,请问要怎么解决啊?
 
前面定义过quad头文件和Rectangle头文件及Rectangle.cpp如下:
#ifndef __QUADRANGLE__
#define __QUADRANGLE__

class Quadrangle
{
public:
string name; //形体的标识
};

typedef Quadrangle * QUADPTR;

#endif

Rectangle头文件
#ifndef __RECT__
#define __RECT__

class Rectangle
{
public:
string name; //形体的标识

Rectangle(int w = 5, int h = 7);
~Rectangle();
void draw();
double area(double s);
string what();

private:
int width, height; //高和宽
};

#endif

Rectangle.cpp
#include <iostream>
#include <string>
using namespace std;

#include "rect.h"

Rectangle::Rectangle(int w, int h) : name("Rectangle"), width(w), height(h) {}

Rectangle::~Rectangle() {}

void Rectangle::draw()
{
cout << what() <<": width = " << width << ", height = " << height << endl;
}

double Rectangle::area(double s)
{
s=width*height;
cout<<"area="<<s<<endl;
return s;//返回形体的面积}

string Rectangle::what()
{
return name;//返回形体的标识}

---华软 网友回答---
需要一个参数,你却没传参数
---华软网友回复---
你的函数定义中有个参数:double Rectangle::area(double s)
而你在调用时:cout << "area = " << p->area() << endl;没有参数,当然出错了。
---华软网友回复---
没有传参...
---华软网友回复---
那应该是cout << "area = " << p->area(double s) << endl;还是cout << "area = " << p->area(width,height) << endl;都报错说s,width,height没定义啊。。c的函数就没学好。。。现在C++,还要请大家多指教啊
---华软网友回复---
引用 4 楼 maodexiayutian 的回复:
那应该是cout << "area = " << p->area(double s) << endl;还是cout << "area = " << p->area(width,height) << endl;都报错说s,width,height没定义啊。。c的函数就没学好。。。现在C++,还要请大家多指教啊

我感觉你好像没学过编程啊!
写成cout << "area = " << p->area(5) << endl;这里的5应该是半径,你可以换成别的数字。
---华软网友回复---
上学期学了C,感觉确实和没学没什么差别。。Rectangle是矩形,也没有半径啊。。。
---华软网友回复---
引用 6 楼 maodexiayutian 的回复:
上学期学了C,感觉确实和没学没什么差别。。Rectangle是矩形,也没有半径啊。。。

刚看了一下,Rectangle是矩形的话,那么你的定义错了。改成如下样子:
Rectangle头文件
#ifndef __RECT__
#define __RECT__

class Rectangle
{
public:
string name; //形体的标识

Rectangle(int w = 5, int h = 7);
~Rectangle();
void draw();
double area();
string what();

private:
int width, height; //高和宽
};

#endif

Rectangle.cpp
#include <iostream>
#include <string>
using namespace std;

#include "rect.h"

Rectangle::Rectangle(int w, int h) : name("Rectangle"), width(w), height(h) {}

Rectangle::~Rectangle() {}

void Rectangle::draw()
{
cout << what() <<": width = " << width << ", height = " << height << endl;
}

double Rectangle::area()
{
s=width*height;
cout<<"area="<<s<<endl;
return s;//返回形体的面积}

string Rectangle::what()
{
return name;//返回形体的标识}

---华软网友回复---
现在好了,不过,S和5还是有区别的哦。。嘿嘿,谢谢啦      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。