不同模板参数的重载运算符
Overload operator for different template parameters
#include <cstddef>
template <typename T, std::size_t MaxElements>
struct circular_buffer{};
template <typename circular_buffer>
bool operator==(const circular_buffer &a, const circular_buffer &b) {
return true;
}
int main() {
circular_buffer<int, 2> a;
circular_buffer<int, 3> b;
a == b;
return 0;
}
此代码仅适用于 2==3。但是我的 2 != 我的 3。帮我修算子。
以下可能对您有用:
template <typename T, std::size_t M1, std::size_t M2>
bool operator==(circular_buffer<T, M1> const & a, circular_buffer<T, M2> const & b) {
// some meaningful logic
return true;
};
您遇到的问题是 a
和 b
属于不同类型,即这两个对象具有不同的 MaxElements
模板参数。因此,您需要提供 operator ==
重载来处理这种情况。
#include <cstddef>
template <typename T, std::size_t MaxElements>
struct circular_buffer{};
template <typename circular_buffer>
bool operator==(const circular_buffer &a, const circular_buffer &b) {
return true;
}
int main() {
circular_buffer<int, 2> a;
circular_buffer<int, 3> b;
a == b;
return 0;
}
此代码仅适用于 2==3。但是我的 2 != 我的 3。帮我修算子。
以下可能对您有用:
template <typename T, std::size_t M1, std::size_t M2>
bool operator==(circular_buffer<T, M1> const & a, circular_buffer<T, M2> const & b) {
// some meaningful logic
return true;
};
您遇到的问题是 a
和 b
属于不同类型,即这两个对象具有不同的 MaxElements
模板参数。因此,您需要提供 operator ==
重载来处理这种情况。