我正在尝试编写一个 c++ 抽象类,但我不知道如何要求这个类的实现者包含一个静态函数。
例如:
class AbstractCoolThingDoer
{
void dosomethingcool() = 0; // now if you implement this class
// you better do this
}
class CoolThingDoerUsingAlgorithmA: public AbstractCoolthingDoer
{
void dosomethingcool()
{
//do something cool using Algorithm A
}
}
class CoolThingDoerUsingAlgorithmB: public AbstractCoolthingDoer
{
void dosomethingcool()
{
//do the same thing using Algorithm B
}
}
现在我想做很酷的事情,而不是如何完成酷事的细节。所以我想做类似的事情
AbstractCoolThingDoer:dosomethingcool();
不需要知道很酷的东西是如何完成的,但这似乎需要一个既是虚拟又是静态的函数,这当然是矛盾的。
基本原理是 CoolThingDoerUsingAlgorithmB 可能会在以后编写,希望需要完成很酷的事情的软件不必重写。
编辑:不确定我是否清楚我要完成的工作。我有 3 个我希望满足的标准
一个使用 abstractcoolthingdoer 并且永远不需要重写的库,即使编写了另一个库从未听说过的coolthingdoer。
如果您尝试编写不符合所需结构的coolthingdoer,则使用该库的可执行文件将无法编译。
coolthingdoer 有一些需要的静态函数。
我可能正在追寻一个糟糕的设计,所以请指点我一个更好的设计。我需要工厂吗?