[英]Operator overloading confusion
我知道已經發布了許多有關運算符重載的問題,但是我無法讓我的代碼與我發現的任何示例一起使用。 是的,我已經看過此鏈接 ,但是仍然很難理解。
我正在嘗試僅重載前綴運算符,但收到一條錯誤消息,指出后綴期望為int。 我不嘗試修改后綴運算符。 我有一個.h文件和一個.cpp文件。 在我的.h文件中,我有類似以下內容:
class X{
public:
/* ... declarations of X ... */
X& operator--(X& x);
};
在.cpp文件中,我有類似以下內容:
#include "X.h"
namespace X{
X& X::operator--(X& x){/*...*/}
}
誰能告訴我我做錯了什么?
前綴--
運算符不帶參數。 其定義應如下:
public:
/* ... declarations of X ... */
X& operator--();
};
同樣在實現它時:
#include "X.h"
namespace X {
X& X::operator--() {/*...*/}
}
X& operator--(X& x);
一定是:
X& operator--();
背景:編譯器認為您已給--
運算符指定了一個參數。 的后綴版本--
需要一個參數,所以它認為你的意思是一個。 但是,按照慣例,該參數的類型必須為int
。 因此,它確切地告訴您: postfix 'X& X::operator--(X&)' must take 'int' as its argument
。
編譯器還可以告訴你,像prefix 'X& X::operator--(X&)' must not take any argument
,如果它想。 但是,哦。 它就是這樣兒的。 產生任何診斷消息就足以符合C ++標准。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.