[英]c++ class inheritance and operator overloading; do operator overloads get inherited?
只是一個簡單的問題,如果我有一個模板類:
template <typename T>
class foo {
public:
bool operator!=(foo& other) const {
//...
}
}
然后我繼承了所說的課程:
template <typename T>
class bar : public foo<T> {
//...
}
運算符重載是否繼承? 如果沒有,我將如何實現它以便...它因為目前在我的測試類中,這會帶來一個錯誤:
for (bar<int> i(baz); i != bar<int>(); i++) {}
++運算符在bar類中實現,因此可以工作,但!=運算符顯然不會被繼承。 錯誤消息是:
error: no match for 'operator!=' in 'i != bar<int>(0u, 0u)'
note: candidate is: bool foo<T>::operator!=(foo<T>&) const [with T = int]
這幾乎總結了我遇到的問題,所以我只是想知道如何繼承運算符重載。
您的運算符定義不太正確:
bool operator!=(foo& other) const {
//...
}
應該
bool operator!=(const foo& other) const {
//...
}
因為你試圖比較一個臨時的,只能綁定到一個const引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.