C++ 调用类的多个实例

C++ 调用类的多个实例,c++,C++,我有一节课 class Command { public: Command (uint32_t _count, uint32_t _pre) { count = _count; pre = _pre; } int parse (string command) { // Some action on the base of given string and pre initialized member //

我有一节课

class Command
{
 public:
  Command (uint32_t _count, uint32_t _pre)
    {
      count = _count;
      pre = _pre;
    }

  int parse (string command)
  {
         // Some action on the base of given string and pre initialized member
         // varaiable
  }

 protected:
  uint32_t pre;
  uint32_t pre;
};
现在我有多个不同“Command”类型的Command类实例。i、 e为了简单起见,我在命令类型上创建实例名

Command type1 (2,3);
Command type2 (6,5);
Command type3 (7,3);
现在,我如何在一行中调用给定“type”的“parse”函数

我可以用if-else来处理

if (type == type1)
 type1->parse (cmd);
else if (type == type2)
  type->parse (cmd);
..
..
但是我能用一种通用的方法来处理这个问题吗?像

'type'->parse (cmd);
可以使用std::vector(带指针):

编辑1:
您还可以使用不带指针的
std::vector
,省去了删除的必要性:

    std::vector<Command> types;
    types.push_back(Command(2,3));
    types.push_back(Command(6,5));
    types.push_back(Command(7,3));
//...
    types[i].parse(cmd);
std::向量类型;
类型。推回(命令(2,3));
类型。推回(命令(6,5));
类型。推回(命令(7,3));
//...
类型[i].parse(cmd);
披露目的细节后,我们还可以提出其他选择


注意:根据注释,添加了不使用指针的
std::vector
用法

你熟悉继承和多态性吗?你熟悉std::vector或数组吗?你能告诉我们更多你想要的吗?不知何故,我不认为你要寻找的答案是“是的,创建一个
命令&
,并称之为
类型”…即使他使用了“类型”这个术语,它们的类型是相同的,所以多态性不一定适用。也不确定继承是否适用。如果类型是连续的,则简单数组可能是最简单的<代码>键入[x].parse(cmd)
@ChristianHackl“Why”只是为了鼓励你在你的轨道上,因为我喜欢在这里看到我的奥地利邻居:-)。虽然我不认为需要(原始)指针,但我认为你的答案是正确的,不管问题是否不明确。原始指针很简单。我看到的问题是三种不同的构造(构造函数的参数)。我不确定是使用复制构造(堆栈上的项目)还是使用智能指针。不管怎么说,这就明白了。我还认为简单的对象会更好。该示例遗漏了OP可能不知道的必要的
delete
s。还有一个输入错误(
push_back
,而不是
push back
)。
delete types[i];
    std::vector<Command> types;
    types.push_back(Command(2,3));
    types.push_back(Command(6,5));
    types.push_back(Command(7,3));
//...
    types[i].parse(cmd);