2
我正在编写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
}
不幸的是,编译器希望我在我的DriverWriter类的DriverInterface上指定一个类型参数。有没有办法重构代码,以便我不需要指定类型?
+1:正是我要说的。 – Puppy 2010-12-19 17:16:27
谢谢。现在看来很明显,但我当然看不到解决方案。 – effnish 2010-12-19 17:29:24