我有一个名为Strategy的一类不同的子类,每个子类都有一个唯一的字符串标识符
class AdaptiveStrategy : Strategy {
public:
const static std::string uniqueKey;
AdaptiveStrategy();
private:
...
}
.cpp文件中的每个文件都有一个基于其名称的唯一标识符。我还有另一个管理这些策略的.cpp文件。这个Selector类有一个指向策略的指针,在我的项目期间可以改变它。
class Selector {
public:
Selector()
std::string getStrategyName() // help!
private:
Strategy *currentStrategy // can be any of the viable Strategy subclasses
}
基本上,这个指针会被重复替换,以根据可能发生的一系列不同事情指向新策略。
我希望在这个Selector类中有一些方法可以返回当前活动策略的唯一字符串标识符 - 这样做的最佳方法是什么?
答案 0 :(得分:1)
通常,这是通过在基类中声明纯虚方法来完成的(假设方法的名称是' toString')。然后所有派生类都必须实现toString方法。
另一种方法是将名称存储在基类中。因此,您必须重载构造函数并将派生类的名称传递给父构造函数。
class AdaptiveStrategy : Strategy {
...
AdaptiveStrategy() : Strategy("AdaptiveStrategy") { }
...
};