使用可变函数覆盖具有不同函数签名的虚函数
Override virtual function with different function signature by using variadic functions
我有一个名为 createA
的子class,它是 class creator
的子class。我想通过在 class createA
中使用不同的函数签名来覆盖函数 create
。这就是我想要实现的。
//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>
对我不起作用。
谢谢。
C++ 对于虚函数可以做什么和不可以做什么有非常严格的规定。除其他事项外,您的函数类型需要匹配。
要理解为什么会这样,让我们考虑一下数组。在 C++ 中,如果您有任何创建者数组 类,那么您如何知道在数组中的一个索引与另一个索引上调用什么类型。
你不知道,C++ 是一种没有运行时类型的编译型语言。这意味着 C++ 中不存在 instanceof 和 typeof 等关键字。
我有一个名为 createA
的子class,它是 class creator
的子class。我想通过在 class createA
中使用不同的函数签名来覆盖函数 create
。这就是我想要实现的。
//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>
对我不起作用。
谢谢。
C++ 对于虚函数可以做什么和不可以做什么有非常严格的规定。除其他事项外,您的函数类型需要匹配。
要理解为什么会这样,让我们考虑一下数组。在 C++ 中,如果您有任何创建者数组 类,那么您如何知道在数组中的一个索引与另一个索引上调用什么类型。
你不知道,C++ 是一种没有运行时类型的编译型语言。这意味着 C++ 中不存在 instanceof 和 typeof 等关键字。