根据子类检索特定字符串

Retrieve specific string based on subclass

我有一堆不同的子classes of one class called Strategy,每个都有一个唯一的字符串标识符

class AdaptiveStrategy : Strategy {
    public:
          const static std::string uniqueKey;

          AdaptiveStrategy();
    private:
          ...
} 

.cpp 文件中的每一个都有一个基于其名称的唯一标识符。我还有另一个管理这些策略的 .cpp 文件。这个选择器 class 有一个指向策略的指针,在我的项目期间它可以改变。

class Selector {
    public:
         Selector()
         std::string getStrategyName() // help!

    private:
         Strategy *currentStrategy // can be any of the viable Strategy subclasses
}

本质上,这个指针被反复替换以指向基于可能发生的一系列不同事情的新策略。

我希望在这个选择器 class 中有一些方法可以返回当前活动策略的唯一字符串标识符 -- 这样做的最佳方法是什么?

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

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

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