扩展包含静态函数的类

时间:2018-05-31 18:55:33

标签: c++ software-design

所以我有一个头文件,如下所示:

class Crc16 
{
public:
   Crc16();

   static long calculateCrc(const BYTE* ptr, long length);
   long getCrc();
private:
   long m_crc;
};

其中BYTE是unsigned char。该实现获取数据并返回该微粒数据的CRC。使用的多项式是固定的,即在静态函数内硬编码。但是,我想通过让某人定义自己的多项式并执行计算来扩展此实现。我想过创建一个新的构造函数,它接受新的多项式并将它赋给一个成员,但是不可能在静态函数中使用它。另一种可能性是创建一个非静态的新函数,它将多项式作为参数。但静态和非静态版本中的代码几乎完全相同。我不想改变我所拥有的静态功能的界面,因为它在很多地方使用。从架构的角度来看,最佳解决方案是什么?

2 个答案:

答案 0 :(得分:1)

我会为多项式的函数添加另一个参数,并给它一个默认值。这使您不必更改任何要使用默认值的调用站点,但允许您在需要时为函数提供自己的多项式。

static long calculateCrc(const BYTE* ptr, long length);

变为

static long calculateCrc(const BYTE* ptr, long length, polynomial_type poly = some_default_value);

答案 1 :(得分:1)

如果将多项式作为参数添加,为什么要更改为将函数更改为非静态?

您可以实施这两项目标:

if

请参阅:http://www.cplusplus.com/doc/tutorial/functions2/