樱桃小丸子的姐姐死了:学习C++一疑问(有关函数定义位置的问题)

来源:百度文库 编辑:高考问答 时间:2024/05/01 13:17:21
小弟刚刚开始学VC 在是否可以在类定义范围外定义函数碰到问题。
书上面说可以在类定义外定义函数,但是小弟用VC试验的时候 发现却不可以
程序如下:这个是书上给出的 但是运行通不过
“void rectangle::assign(double len,double wide)
{
length=len;width=wide;
}”就是要定义的函数,如果将其写在类 rectangle定义中则可以运行

程序:
#include<iostream.h>
class rectangle
{
protected:
double length;
double width;
public:
rectangle(){assign(0,0);}
rectangle(double len,double wide){assign(len,wide);}
double getLength(){return length;}
double getWidth(){return width;}
double getArea(){return length*width;}
};

void rectangle::assign(double len,double wide)
{
length=len;width=wide;
}

main()
{
rectangle rect;
double len,wide;
cout<<"enter length of rectangle:";
cin>>len;
cout<<"enter width of rectangle:";
cin>>wide;
rect.assign(len,wide);
cout<<"rectangle length="<<rect.getLength()<<"\n"
<<" width ="<<rect.getWidth()<<"\n"
<<" area ="<<rect.getArea()<<"\n";
return 0;
}
一楼的回答我试了 没有用的
二楼的回答 我不知道具体放在什么地方

正确的程序为:
#include<iostream.h>
class rectangle
{
protected:
double length;
double width;
public:
rectangle::assign(double len,double wide);
rectangle(){assign(0,0);}
rectangle(double len,double wide){assign(len,wide);}
double getLength(){return length;}
double getWidth(){return width;}
double getArea(){return length*width;}
};
rectangle::assign(double len,double wide)
{
length=len;width=wide;
}

int main()
{
rectangle rect;
double len,wide;
cout<<"enter length of rectangle:";
cin>>len;
cout<<"enter width of rectangle:";
cin>>wide;
rect.assign(len,wide);
cout<<"rectangle length="<<rect.getLength()<<"\n"
<<" width ="<<rect.getWidth()<<"\n"
<<" area ="<<rect.getArea()<<"\n";
return 0;
}
在类定义外定义函数时需在类内做函数声明。
另void rectangle::assign(double len,double wide) 类声明重复,这里rectangle是定义的类,是你需要的,所以void不要。还有main( )前必须有类声明,这里为int。


void rectangle::assign(double len,double wide)
{
length=len;width=wide;
}
改为:
inline void rectangle::assign(double len,double wide)
{
length=len;width=wide;
}
试试
加上inline的意思是:将rectangle函数作为类的内联函数

少了一行使用命名空间:using namespace std