使用可变参数覆盖具有不同功能签名的虚拟功能

时间:2018-10-01 21:19:27

标签: c++ variadic-functions

我有一个名为createA的子类,它是类creator的子类。我想通过在类create中使用不同的函数签名来覆盖函数createA。这就是我想要实现的。

//factory.h
class creator{
  virtual FactoryPtr create ()=0;
}

//createA.h
class createA: public creator{
    FactoryPtr create (string f, bool s, const Observation& obs, std::string dom,...etc) override;
}

...etc意味着函数签名中还会有其他参数,但是我认为列举四个参数作为示例应该没问题。

我想知道是否有通过使用可变参数函数或任何其他方法来实现我想要的功能?我没有c ++ 17,所以库<any>对我不起作用。

谢谢。

1 个答案:

答案 0 :(得分:0)

C ++对于可以和不能实现的虚函数有非常严格的规定。除其他外,您的功能类型需要匹配。

要了解为什么会发生这种情况,请考虑数组。在C ++中,如果您有一组创建者类数组,那么您将如何知道要在数组中的一个索引与另一个索引上调用哪种类型。

您不知道,C ++是没有运行时类型的编译语言。这意味着C ++中不存在诸如instanceof和typeof之类的关键字。