そのため、いくつかのクラスが継承されるプロジェクトの 1 つの基本クラスを作成しようとしています。私の問題は、メソッドの 1 つから std::bitset を返そうとしていることです。問題は、各サブクラスで異なるサイズのビットセットが返されることです。そのため、ビットセットを返すメソッドを宣言する方法を探しています。未知のサイズであり、サブクラスに知られている基本クラスにはよく知られていません。さらに、基本クラスが抽象的であり、単独では使用されないことが保証されています。
1051 次
1 に答える
6
のサイズはstd::bitset
その型の一部であり、異なるサイズstd::bitset
の は異なる無関係な型です。type-erasureを使用して違いを抽象化できますが、特定のケースでは、 Boostで利用できるような動的ビットセットを使用する方が簡単です。
http://www.boost.org/doc/libs/release/libs/dynamic_bitset/dynamic_bitset.html
基本クラスが単なるユーティリティ クラスであり、外部からの使用を意図していない場合は、std::bitset
サイズでパラメータ化されたテンプレート クラスにすることができます。
template< int Size > class base
{
typedef std::bitset< Size > bitset_type;
};
class derived : base< 128 > { ... };
ただし、各クラスは、関連のない別の基本クラスから継承されます。
于 2012-06-01T20:42:28.303 に答える