成员函数返回bitset,继承自基类

时间:2012-06-01 20:40:01

标签: c++ inheritance polymorphism bitset

所以我正在尝试为我的一个项目创建一个基类,它将从中继承几个类。我的问题是我试图从其中一个方法返回一个std :: bitset,问题是在每个子类中都会返回不同大小的bitset,所以我正在寻找一种方法来声明一个返回bitset的方法未知大小,对于子类已知的基类来说是未知的。另外,我保证基类是抽象的,不会单独使用。

1 个答案:

答案 0 :(得分: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 > { ... };

但是,每个类都将继承自不同的无关的基类。