0

そのため、いくつかのクラスが継承されるプロジェクトの 1 つの基本クラスを作成しようとしています。私の問題は、メソッドの 1 つから std::bitset を返そうとしていることです。問題は、各サブクラスで異なるサイズのビットセットが返されることです。そのため、ビットセットを返すメソッドを宣言する方法を探しています。未知のサイズであり、サブクラスに知られている基本クラスにはよく知られていません。さらに、基本クラスが抽象的であり、単独では使用されないことが保証されています。

4

1 に答える 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 に答える