根据子类检索特定字符串

时间:2016-08-05 17:45:04

标签: c++ string inheritance subclass

我有一个名为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类中有一些方法可以返回当前活动策略的唯一字符串标识符 - 这样做的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

通常,这是通过在基类中声明纯虚方法来完成的(假设方法的名称是' toString')。然后所有派生类都必须实现toString方法。

另一种方法是将名称存储在基类中。因此,您必须重载构造函数并将派生类的名称传递给父构造函数。

class AdaptiveStrategy : Strategy {
...
  AdaptiveStrategy() : Strategy("AdaptiveStrategy") { }
...
};