如果我有模板类,请快速提问:
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]
这几乎总结了我遇到的问题,所以我只是想知道如何继承运算符重载。
答案 0 :(得分:6)
您的操作员定义不太正确:
bool operator!=(foo& other) const {
//...
}
应该是
bool operator!=(const foo& other) const {
//...
}
因为您正在尝试与临时进行比较,而临时只能绑定到const引用。