写一个Helper类,提供模板函数可对类型的参数如quint32、quint64进行置位或者清零位操作
时间: 2024-05-07 21:18:51 浏览: 109
几个用模板实现的位控制函数
下面是一个示例代码,其中包含了一个Helper类和两个模板函数:
```cpp
#include <cstdint>
template<typename T>
class Helper {
public:
static void setBit(T& value, int bit) {
value |= (static_cast<T>(1) << bit);
}
static void clearBit(T& value, int bit) {
value &= ~(static_cast<T>(1) << bit);
}
};
template<typename T>
void setBit(T& value, int bit) {
Helper<T>::setBit(value, bit);
}
template<typename T>
void clearBit(T& value, int bit) {
Helper<T>::clearBit(value, bit);
}
```
这个Helper类中定义了两个静态成员函数setBit和clearBit,用于设置和清除指定类型参数中的某一位。这两个函数都采用了模板参数T,因此它们可以用于任何类型的参数,只要该类型支持位运算。
此外,为了方便使用,还定义了两个模板函数setBit和clearBit,这些函数只是对Helper类中的函数进行了简单的封装,使得调用时更加简单易懂。
下面是一个使用示例:
```cpp
#include <iostream>
int main() {
std::uint32_t value1 = 0;
setBit(value1, 0);
clearBit(value1, 1);
std::cout << value1 << std::endl;
std::uint64_t value2 = 0;
setBit(value2, 63);
clearBit(value2, 62);
std::cout << value2 << std::endl;
return 0;
}
```
这个示例演示了如何使用这些函数来设置和清除某些位。请注意,这些函数支持所有整数类型,包括quint32和quint64。
阅读全文