纯虚函数需要采用不同的参数

时间:2015-10-04 12:54:00

标签: c++ inheritance

我有以下基类。

class Furniture
{
public:
    virtual void Collapse() = 0;
};

使用派生类:

class Table : public Furniture
{
public:
    void Collapse() 
    { 
       Save(my_file);
    }
protected:
    void Save(char* filepath);

private:
    char* my_file;
};

class Armoire : public Furniture
{
public:
    void Collapse()
    {
       Save(my_file);
    }
protected:
    void Save(char* filepath);
private:
    char* my_file;
};

class Chair : public Furniture
{
public:
    void Collapse()
    {
       Save(); // note - no filepath
    }
protected:
    void Save();
};

在阅读完评论后,我在某种程度上编辑了这个问题,以更准确地描述手头的问题。

我的问题是,除Furniture派生的所有类之外的所有类都使用参数定义Save()函数,例如TableArmoire正在执行的操作。只有Chair类定义了一个没有参数的Save()函数。

我想以某种方式移动Save()函数的声明 - 成为接口的一部分,并让派生类提供实现。但是那个不需要参数的类Chair意味着我不能这样做。

设计这个的最佳方法是什么?

1 个答案:

答案 0 :(得分:-2)

在基类中使用默认参数:

virtual void Collapse( int seconds = 0 ) = 0;