我无法弄清楚我在这里做错了什么,希望这里有人可以启发我。
我有一个班级Flags
,这是一个非常简化的版本,但我声明了一个位集
class Flags
{
private:
//List of 8 bits
std::bitset<8> _P;
public:
Flags();
}
在我的构造函数中,我将其初始化为
Flags::Flags()
: _P(32ul)
{}
但它不会编译并给我错误
错误C2668:'std :: bitset&lt; _Bits&gt; :: bitset':模糊调用 重载功能
这是在VS2010 SP1 64位编译但作为32位程序
修改
接受的答案是针对上述内容的,但作为附注,任何人都可以解释为什么在使用默认构造函数(应该将它们全部初始化为零)时,它们都不会全部设置为零?
_p.to_ulong()
返回1390560944 和_p看起来像
[8](0,0,0,0,1,1,0,1)
答案 0 :(得分:5)
另请注意,以_
开头的标识符和大写字母是为实现保留的,并且在您的程序中使用非法。
编辑:根据变通方法页面(如果我正确阅读),解决方法是将您的值转换为unsigned long long
而不是unsigned long
。