首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

问个关于头文件的有关问题

2012-03-18 
问个关于头文件的问题Point.h的内容:class Point{public:Point(float x0,float y0)void setPoint(float

问个关于头文件的问题
Point.h的内容:
class Point
{
public:
Point(float x=0,float y=0);
void setPoint(float,float);
float getX()const
{
return x;
}
float getY()const
{
return y;
}
friend ostream &operator << (ostream &,const Point &);
protected:
float x,y;
};
Point.cpp的内容:
#include"Point.h"
Point::Point(float a,float b)
{
x=a;
y=b;
}
void Point::setPoint(float a,float b)
{
x=a;
y=b;
}
ostream &operator <<(ostream &output,const Point &p)
{
output<<"["<<p.x<<","<<p.y<<"]"<<endl;
return output;
}
Main.cpp的内容:
#include"Point.cpp"
#include<iostream>
int main()
{
Point p(3.5,6.4);
cout<<"x="<<p.getX()<<", y="<<p.getY()<<endl;
p.setPoint(8.5,6.8);
cout<<"p(new):"<<endl;
return 0;
}
三个文件在一个文件夹里,运行是出现了一堆错误,如下:
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.h(14) : error C2143: syntax error : missing ';' before '&'
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.h(14) : error C2433: 'ostream' : 'friend' not permitted on data declarations
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.h(14) : error C2501: 'ostream' : missing storage-class or type specifiers
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.h(14) : error C2244: 'ostream' : unable to resolve function overload
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.h(14) : error C2061: syntax error : identifier 'ostream'
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.h(14) : error C2501: '<<' : missing storage-class or type specifiers
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.h(14) : error C2805: binary 'operator <<' has too few parameters
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.cpp(12) : error C2143: syntax error : missing ';' before '&'
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.cpp(12) : error C2501: 'ostream' : missing storage-class or type specifiers
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.cpp(12) : error C2061: syntax error : identifier 'ostream'
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.cpp(13) : error C2501: '<<' : missing storage-class or type specifiers
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.cpp(13) : error C2809: 'operator <<' has no formal parameters
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.cpp(14) : error C2065: 'output' : undeclared identifier
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.cpp(14) : error C2297: '<<' : illegal, right operand has type 'char [2]'
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.cpp(14) : error C2065: 'p' : undeclared identifier
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.cpp(14) : error C2228: left of '.x' must have class/struct/union type
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.cpp(14) : error C2228: left of '.y' must have class/struct/union type
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\point.cpp(14) : error C2065: 'endl' : undeclared identifier
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\main.cpp(6) : warning C4305: 'argument' : truncation from 'const double' to 'float'
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\main.cpp(7) : error C2065: 'cout' : undeclared identifier
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\main.cpp(7) : error C2297: '<<' : illegal, right operand has type 'char [3]'
c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\main.cpp(8) : warning C4305: 'argument' : truncation from 'const double' to 'float'


c:\documents and settings\asus.asus-6c88744274\桌面\新建文件夹\main.cpp(9) : error C2297: '<<' : illegal, right operand has type 'char [8]'
执行 cl.exe 时出错.






该怎么改啊,高手指点下哈.

[解决办法]
Point.h的内容: 
#include <iostream>
using namespace std;
class Point 

public: 
Point(double x=0,double y=0); 
void setPoint(double,double); 
float getX()const 

return _x; 

float getY()const 

return _y; 
}
friend ostream & operator<<(ostream &,const Point &); 
protected: 
double _x;
double _y; 
}; 
Point::Point(double a,double b) 
:_x(a),_y(b)


void Point::setPoint(double a,double b) 

_x=a; 
_y=b; 


ostream & operator<<(ostream & output,const Point & p) 

output <<"[" <<p.getX() <<"," <<p.getY() <<"]" <<endl; 
return output; 

Main.cpp的内容:
#include"Point.h" 
int main() 

Point p(3.5,6.4); 
cout <<"x=" <<p.getX() <<", y=" <<p.getY() <<endl; 
p.setPoint(8.5,6.8); 
cout <<"p(new):" <<endl; 
return 0; 
}

热点排行