小编J0h*_*D0e的帖子

设计模式,对象的矢量,两种可能的类型

我需要在向量中存储两种类型的对象,这两种类型几乎没有任何共同之处.

将它们存储在向量中之后,我想迭代该向量并执行操作,具体取决于类型.

到目前为止我的想法:

  • 多态性.矫枉过正,对我帮助不大,因为我可能会这样做:

    if(dynamic_cast<T1>() != nullptr) {
        ...
    } else {
       ...
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 合并两种类型(方法和字段)并添加一个布尔值,表示其类型1或2.

这两种模式对我来说都显得十分笨拙,有一个完全简单的解决方案,我根本就看不到.

第一种类型是这样的:

struct PatternMatch {
  int length;
  int indexInDict;
}
Run Code Online (Sandbox Code Playgroud)

第二个:

struct NoMatch {
  std::string rawChars;
}
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism design-patterns vector

1
推荐指数
1
解决办法
78
查看次数

标签 统计

c++ ×1

design-patterns ×1

polymorphism ×1

vector ×1