避免在每个派生类中重新实现方法调用

时间:2016-12-08 10:41:47

标签: c++

我有一个抽象类及其派生类。

我想在抽象类中拥有一个成员(即fDerivedName),其中包含派生类的名称。

在每个派生类的构造函数中,我做了:

    public ActionResult GenerateExcelReport(FilterParams args)
    {
        byte[] results = GenerateLargeExcelReportThatTake30Seconds(args);
        return File(results, @"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", "MyReport.xlsx");
    }

有一种方法可以避免在每个派生类中重新实现它吗?

由于

1 个答案:

答案 0 :(得分:1)

您可以在基类中实现构造函数(然后不再是纯抽象),将派生类的名称作为参数传递,并在构造函数的初始化列表中执行赋值:

class Base
{
public:
   Base( const std::string& derived_class_name):
      fDerivedName( derived_class_name)
   {
   }
   ...
};

但是,当然,您仍然必须从派生类的每个构造函数中调用此基类构造函数。你必须将类名作为参数传递,你不能将它作为参数传递给你。调用由派生类重载的虚函数ClassName()