小编eff*_*ish的帖子

参考任何类型的类模板

我正在编写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上指定一个类型参数.有没有办法重构代码,以便我不需要指定类型?

c++ templates pass-by-reference

2
推荐指数
1
解决办法
106
查看次数

标签 统计

c++ ×1

pass-by-reference ×1

templates ×1