C++ 应该接受不同输入参数的纯虚拟函数-应该如何实现?
假设我有一个名为Component的基类C++ 应该接受不同输入参数的纯虚拟函数-应该如何实现?,c++,polymorphism,virtual,C++,Polymorphism,Virtual,假设我有一个名为Component的基类 class Component { public: virtual void init() = 0; }; 该基类需要派生类来定义init函数。但是,此init函数声明强制函数不接受任何输入参数。这不是我想要的 我正在寻找一种方法来强制执行init函数,但允许派生类在接受的参数数量上有所不同 根据组件类型,派生类应接受不同数量的输入 < C++ > 如何实现这一点? 例子 class DerivedComponent1 : Componen
class Component
{
public:
virtual void init() = 0;
};
该基类需要派生类来定义init函数。但是,此init函数声明强制函数不接受任何输入参数。这不是我想要的
我正在寻找一种方法来强制执行init函数,但允许派生类在接受的参数数量上有所不同
根据组件类型,派生类应接受不同数量的输入
< C++ > 如何实现这一点?
例子
class DerivedComponent1 : Component
{
void init(int arg1);
};
class DerivedComponent2 : Component
{
void init(int arg1, int arg2);
};
您应该考虑使用Switter语句而不是虚拟限定符来解决这个问题。只需选择一个函数定义,然后选择一个默认值或零即可绕过对参数的考虑。当您试图以这种方式编写类所做的事情时,很容易混淆,因此必须对函数进行完整的注释和单元测试
编辑说明:您可以考虑每个新派生实例中的虚拟限定符,但这不是您所问的问题的解决方案。构造函数或析构函数方法必须具有非常具体的效果;否则,对类的效果进行质量测试是不切实际的,因此,当您需要依赖于一个大小适合的结构时,uctor,只有在编码过程中非常小心,才能真正达到这种效果]这是三种不同的函数。在任何情况下,如果有一个指针/引用一个组件,init的调用方会知道多少参数要通过。抱歉,这不能在C++中完成。C++没有这样的工作。子类只能重写具有相同签名的虚拟方法。这是基本的。要使用VA。riadic函数。它应该适用于纯虚拟。你想如何调用这些初始化函数?这可能会给我们一个实现这一点的线索。