簡體   English   中英

c ++類繼承和運算符重載;運算符重載是否繼承?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM