tom*_*502 3 c++ visual-studio-2010 bitset
我无法弄清楚我在这里做错了什么,希望有人在这里可以启发我.
我有一个类Flags,这是一个非常简化的版本,但我声明了一个bitset
class Flags
{
private:
//List of 8 bits
std::bitset<8> _P;
public:
Flags();
}
Run Code Online (Sandbox Code Playgroud)
在我的构造函数上,我将其初始化为
Flags::Flags()
: _P(32ul)
{}
Run Code Online (Sandbox Code Playgroud)
但它不会编译并给我错误
错误C2668:'std :: bitset <_Bits> :: bitset':对重载函数的模糊调用
这是在VS2010 SP1 64位编译但作为32位程序
编辑
接受的答案是针对上述情况,但作为旁注,任何人都可以解释为什么当使用默认构造函数(它应该将它们全部初始化为零)时,它们并不都设置为零?
_p.to_ulong()
Run Code Online (Sandbox Code Playgroud)
返回1390560944,_p看起来像
[8](0,0,0,0,1,1,0,1)
Run Code Online (Sandbox Code Playgroud)
根据http://connect.microsoft.com/VisualStudio/feedback/details/532897/problems-constructing-a-bitset-from-an-unsigned-long-in-the-vc-rc这是VC中的一个错误
另请注意,_以及以大写字母开头的标识符将保留用于实现,并且在程序中使用非法.
编辑:根据变通方法页面(如果我正确阅读),解决方法是将您的值转换为unsigned long long而不是unsigned long.
| 归档时间: |
|
| 查看次数: |
1775 次 |
| 最近记录: |