列挙型を使用したテンプレートの特殊化

私は、コードから出力するための特殊なメソッドを提供するためにenum引数を持つテンプレートを使用しています。

template 
struct sensorOutput;

template<>
struct sensorOutput 
{
    void setData(Objects& objs)
    {
       //output specific to DEVICE1
       //output velocity
        objs.set(VELOCITY, vel[Device::DEVICE1]);
       //output position
        objs.set(POSITION, pos[Device::DEVICE1]);
    }
};

template <>
struct sensorOutput 
{

    void setData()
    {
       //output specific to DEVICE2
       //output altitude
        objs.set(ALTITUDE, alt[Device::DEVICE2]);
    }
};

私は今、速度と位置を出力するDEVICE1に似た別のセンサーを追加します。

複数の専門分野を設定する方法はありますか?私が試してみました

template <>
struct sensorOutput 
struct sensorOutput 
{

    void setData()
    {
       //output specific to DEVICE1 and DEVICE3
       //output velocity
        objs.set(VELOCITY, vel[d]);
       //output position
        objs.set(POSITION, pos[d]);
    }
};
4

1 答え

継承はどうですか?

template
struct sensorOutputVeloricyAndPosition
{
    void setData()
    {
       //output specific to DEVICE1 and DEVICE3
       //output velocity
        objs.set(VELOCITY, vel[d]);
       //output position
        objs.set(POSITION, pos[d]);
    }
}


template<>
struct sensorOutput : public sensorOutputVeloricyAndPosition
{ };

template<>
struct sensorOutput : public sensorOutputVeloricyAndPosition
{ };
3
追加された