gpt4 book ai didi

c++ - 使用枚举来专门化模板

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:55 25 4
gpt4 key购买 nike

我一直在使用带有枚举参数的模板来为我的代码输出提供专门的方法。

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]);
}
};

最佳答案

继承呢?

template<Device::devEnum d>
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<Device::DEVICE1> : public sensorOutputVeloricyAndPosition<Device::DEVICE1>
{ };

template<>
struct sensorOutput<Device::DEVICE3> : public sensorOutputVeloricyAndPosition<Device::DEVICE3>
{ };

关于c++ - 使用枚举来专门化模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9159480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com