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