當我試圖獨立非成員重載運營商的聲明和實現,我得到了一個VC2010 LNK2001錯誤,我的代碼是這樣的:運算符在類之外重載!
-foo.h-
class A
{
public:
A(float x);
float x;
};
A operator +(const A&, const A&);
-foo.cpp-
A::A(float x)
{
this->x = x;
}
A operator +(const A& lh, const A& rh)
{
return A(lh.x + rh.x);
}
所以一旦我使用「+」操作,錯誤泵出,但如果我在頭文件中刪除該聲明,沒有LNK2001錯誤..我想不通爲什麼..
你使用任何命名空間? – 2010-11-08 03:57:19
是的,我用我自己定義的命名空間 – Alan 2010-11-08 04:01:42
下次給出確切的錯誤信息。但是這個命名空間正在創造這個問題。看到我的答案。 – 2010-11-08 04:02:29