避免C ++中的代码重复

时间:2018-02-22 19:59:41

标签: c++

我在一个项目中有类似的东西:

device::getInfo()
{
    // call static instance of computer
    desktop::instance().getDetailedInfo()
    // do some work
}

我想从这个类继承并在不同的项目中重用代码,但我想使用不同的对象实例

device::getInfo()
{
    // call static instance of computer
    laptop::instance().getDetailedInfo()
    // do some work
}

实现这一目标的最佳途径是什么?我唯一能想到的就是使用预处理程序指令。

1 个答案:

答案 0 :(得分:0)

  

我想继承这个类并在不同的项目中重用代码

...

  

实现这一目标的最佳途径是什么?我唯一能想到的就是使用预处理程序指令。

解决方案1 ​​

在派生类中覆盖device::getInfo()

device_inherited::getInfo()
{
   laptop::instance().getDetailedInfo()
}

解决方案2

如果可以从公共基类派生desktoplaptop,则可以使用virtual中的device函数来获取对相应类的引用。< / p>

device::getInfo()
{
    get_destop_base().getDetailedInfo()
}

// virtual member function
desktop_base& device::get_desktop_base()
{
   return desktop::instance();
}

// virtual member function
desktop_base& device_inherited::get_desktop_base()
{
   return laptop::instance();
}