gpt4 book ai didi

c++ - 从 template 结构继承,带有多个 typename 模板参数

转载 作者:太空宇宙 更新时间:2023-11-04 12:35:40 29 4
gpt4 key购买 nike

<分区>

这是我多年来作为一个感激的访客使用这个平台后的第一个问题。请对我温柔一点。

我目前正在为 ADC 实现一个接口(interface),它可以与不同类型的微 Controller 和不同的架构一起使用。

遗憾的是,这将可用的 c++ 版本限制为 11,以保证 MCU 之间的兼容性。

我们的想法是定义一个通用的 API ADC 结构,其中传递固定宽度整数类型的类型名称,以及 ADC 的最大可实现最小值和最大值。这两个值旨在存储为 constexpr。

因此我想到了这个:

template<typename T, T max, T min>
struct ADC
{
public:
static constexpr T maximum = max;
static constexpr T minimum = min;
virtual void reset() = 0;
// ...
};

template<typename T, T max, T min>
struct xyzAdc : ADC<typename T, T max, T min>
{
public:
uint8_t someSpecificADCStuff = 0xac; // arbitrarily chosen
// ....
};

例如,可能有一个提供 12 位分辨率的 ADC。这可以用于单端或差分模式,导致如下用法:

xyzADC<uint16_t, 0, 4095> singleEndedADC;
// or
xyzADC<int16_t, -2048, 2047> diffADC;

不幸的是,这不会编译。产生的错误信息是

error: wrong number of template arguments (1, should be 3)
struct xyzAdc : ADC<typename T, T max, T min>

老实说,我不知道这条错误消息暗示了什么。我做了一些研究,但找不到类似的问题,其中涵盖了这一点。

我做错了什么? c++11 是否提供了另一种方法来实现我想要做的事情?这通常是一个合理的模式/想法吗?还是我应该编写另一个模板来包装这些参数?

如能提供任何帮助或提示,包括更深入的阅读,我们将不胜感激。提前致谢。

编辑:固定代码中的整数类型大小,与问题无关的错字

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