4
私は、コードからの出力に特化したメソッドを提供するために、enum引数を持つテンプレートを使用しています。列挙型を使用してテンプレートを特殊化する
template <Device::devEnum d>
struct sensorOutput;
template<>
struct sensorOutput <Device::DEVICE1>
{
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 <Device::DEVICE2>
{
void setData()
{
// output specific to DEVICE2
// output altitude
objs.set(ALTITUDE, alt[Device::DEVICE2]);
}
};
ここで、速度と位置を出力するDEVICE1に似たセンサーを追加します。
複数のスペシャライゼーションを設定する方法はありますか?私は試しました
template <>
struct sensorOutput <Device::DEVICE1 d>
struct sensorOutput <Device::DEVICE3 d>
{
void setData()
{
// output specific to DEVICE1 and DEVICE3
// output velocity
objs.set(VELOCITY, vel[d]);
// output position
objs.set(POSITION, pos[d]);
}
};