我在一个项目中有类似的东西:
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
}
实现这一目标的最佳途径是什么?我唯一能想到的就是使用预处理程序指令。
答案 0 :(得分:0)
我想继承这个类并在不同的项目中重用代码
...
实现这一目标的最佳途径是什么?我唯一能想到的就是使用预处理程序指令。
在派生类中覆盖device::getInfo()
。
device_inherited::getInfo()
{
laptop::instance().getDetailedInfo()
}
如果可以从公共基类派生desktop
和laptop
,则可以使用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();
}