我正在编写C++代码,它引用了一个依赖于特定硬件,固件和驱动程序的类.我想把接口用于测试,但是有一些障碍让我感到难过.我正在接口的类是自动生成的(不是我的想法)所以我不能从定义接口的基类继承它.我需要调用的方法不是虚拟的,因此我的测试存根不能从它继承并覆盖方法.
在我看来,我可以创建一个模板化的包装类,只是将调用重定向到它所键入的类.我会有类似......
template< class T >
class DriverInterface
{
public:
DriverInterface( T& driverImpl ):
m_driverImpl( driverImpl )
{
}
virtual ~DriverInterface( void )
{
}
virtual void GetDataBuffer( char *&pData, int &bufLen )
{
m_driverImpl.GetDataBuffer( pData, bufLen );
}
virtual void WriteDataBuffer( char *pData, int bufLen )
{
m_driverImpl.WriteDataBuffer( pData, bufLen );
}
protected:
T& m_driverImpl;
private:
};
class DriverWriter
{
public:
DriverWriter( DriverInterface& driverInterface );
//etc
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,编译器要我在DriverWriter类的DriverInterface上指定一个类型参数.有没有办法重构代码,以便我不需要指定类型?