C++中类的内联成员函数的声明方式包括:显式声明和隐式声明。
将函数体直接放到类体内的声明方式即为隐式声明。这种声明方式简单。如下:
#ifndef Point_h_h
#define Point_h_h
class Point
{
float x,y;public:
Point();
Point(float a,float b);float GetX(void);
float GetY(void);
float Point::GetX(void){return x;}
};
#endif显式声明在C++中(visual C++ 2008)正确的使用方式应该如下:
//Point.h
#ifndef Point_h_h
#define Point_h_h
class Point
{
float x,y;public:
Point();
Point(float a,float b);float GetX(void);
float GetY(void);
};
#endifinline float Point::GetX(void)
{
return x;
}
//Point.cpp
#include "Point.h"
Point::Point()
{
x = 0.0;
y = 0.0;
}
Point::Point(float a, float b)
{
x = a;
y = b;
}float Point::GetY(void)
{
return y;
}注意上面定义方式中,如果把GetX函数放到.CPP文件中定义时,单个文件进行编译,VC不会报错。但是对项目进行编译时系统将报错如下:
fatal error LNK1120: 2 unresolved externals
在网上搜索了很久,似乎没人遇见过。。。
最后在这个地方找到了答案:http://blog.csdn.net/testing2007/article/details/5256964,感谢testing2007这位仁兄!