MyClass.h文件:
class CMyClass
{
public:
CMyClass();
virtual ~CMyClass();
friend CMyClass operator+(long Dol, CMyClass Curr);
};
CMyClass operator+(long Dol, CMyClass Curr )//就是这个函数!
{
return Curr;
}
MyClass.cpp文件:#include "MyClass.h"
CMyClass::CMyClass()
{}
CMyClass::~CMyClass()
{}
mainf文件:#include "MyClass.h"
void main(void)
{}
为简便起见,我省略了其它无关的东西,不过这样已经可以说明问题,大家可以试一试。
class CMyClass
{
public:
CMyClass();
virtual ~CMyClass();
friend CMyClass operator+(long Dol, CMyClass Curr);
};
CMyClass operator+(long Dol, CMyClass Curr )//就是这个函数!
{
return Curr;
}
MyClass.cpp文件:#include "MyClass.h"
CMyClass::CMyClass()
{}
CMyClass::~CMyClass()
{}
mainf文件:#include "MyClass.h"
void main(void)
{}
为简便起见,我省略了其它无关的东西,不过这样已经可以说明问题,大家可以试一试。
不要在.h中加入任何定义,.h是声明用的
如果 operator+ 放在 myclass.h文件中,在myclass.cpp中包含了myclass.h ,此是编译程序得到了一次operator+的定义 , 而在 mainf 中也包含了myclass.h,编译程序又得到了一次operator+的定义,而且这两个定义是完全一样的,所以编译程序无法正确编译。最好的方式如rchu所说。此外,在头文件中最好加入条件,避免此头文件在同一文件中被多次包含,因为多次声明也会导致出错。
如:#ifndef _CMYCLASS_
#define _CMYCLASS_class CMyClass
{
public:
CMyClass();
virtual ~CMyClass();
friend CMyClass operator+(long Dol, CMyClass Curr);
};#endif