ここで何か間違ったことをしているのかどうかわかりません。うまくいけば、ここの誰かが私を啓発してくれます。
クラスがFlags
あります。これは非常に単純化されたバージョンですが、ビットセットを宣言します
class Flags
{
private:
//List of 8 bits
std::bitset<8> _P;
public:
Flags();
}
私のコンストラクタでは、次のように初期化します
Flags::Flags()
: _P(32ul)
{}
しかし、それはコンパイルされず、エラーが発生します
エラー C2668: 'std::bitset<_Bits>::bitset': オーバーロードされた関数のあいまいな呼び出し
これは VS2010 SP1 64 ビットでコンパイルされていますが、32 ビット プログラムとしてコンパイルされています。
編集
受け入れられた答えは上記のものですが、補足として、デフォルトのコンストラクター(すべてをゼロに初期化する必要があります)を使用するときに、すべてがゼロに設定されない理由を誰かが説明できますか?
_p.to_ulong()
1390560944 を返し、_p は次のようになります
[8](0,0,0,0,1,1,0,1)