我有以下基类。
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()
函数,例如Table
和Armoire
正在执行的操作。只有Chair
类定义了一个没有参数的Save()
函数。
我想以某种方式移动Save()
函数的声明 - 成为接口的一部分,并让派生类提供实现。但是那个不需要参数的类Chair
意味着我不能这样做。
设计这个的最佳方法是什么?
答案 0 :(得分:-2)
在基类中使用默认参数:
virtual void Collapse( int seconds = 0 ) = 0;