返回基类内部位集的成员函数



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

你不能

这样做,std::bitset的大小是其类型的一部分,不同大小的std::bitset是不同的不相关类型。您可以使用类型擦除来抽象差异,但在特定情况下,仅使用动态位集会更简单,例如 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 > { ... };

但是,您的每个类都将从不同的不相关的基类继承。

最新更新