C++ 从模板继承<;类型名称T、T最大值、T最小值>;具有多个typename模板参数的结构
这是我在这个平台上的第一个问题,多年来我一直把它当作一个感恩的访问者。请对我温柔一点 我目前正在为ADC实现一个接口,可以与不同类型的微控制器和不同的体系结构一起使用 遗憾的是,这限制了可用的C++版本到11,以保证MCU之间的兼容性。p> 其思想是定义一个通用的API ADC结构,其中传递一个固定宽度整数类型的typename以及ADC的最大可实现最小值和最大值。这两个值打算存储为constexpr 因此,我提出了以下建议:C++ 从模板继承<;类型名称T、T最大值、T最小值>;具有多个typename模板参数的结构,c++,c++11,templates,inheritance,C++,C++11,Templates,Inheritance,这是我在这个平台上的第一个问题,多年来我一直把它当作一个感恩的访问者。请对我温柔一点 我目前正在为ADC实现一个接口,可以与不同类型的微控制器和不同的体系结构一起使用 遗憾的是,这限制了可用的C++版本到11,以保证MCU之间的兼容性。p> 其思想是定义一个通用的API ADC结构,其中传递一个固定宽度整数类型的typename以及ADC的最大可实现最小值和最大值。这两个值打算存储为constexpr 因此,我提出了以下建议: 模板 结构模数转换器 { 公众: 静态constexpr T最大值=
模板
结构模数转换器
{
公众:
静态constexpr T最大值=最大值;
静态constexpr T最小值=最小值;
虚空重置()=0;
// ...
};
模板
结构xyzAdc:ADC
{
公众:
uint8\u t someSpecificADCStuff=0xac;//任意选择
// ....
};
例如,可能存在提供12位分辨率的ADC。这可以在单端或差分模式下使用,从而产生如下用途:
xyzADC单端数据;
//或
xyzADC-diffADC;
不幸的是,这没有编译。生成的错误消息是
error: wrong number of template arguments (1, should be 3)
struct xyzAdc : ADC<typename T, T max, T min>
错误:模板参数的数量错误(1,应该是3)
结构xyzAdc:ADC
老实说,我不知道这个错误消息暗示了什么。
我做了一些研究,但没有找到一个类似的问题,其中包括这一点
我做错了什么?c++11是否提供了另一种方法来实现我的目标?
这通常是一个合理的模式/想法吗?
或者我应该编写另一个模板来包装这些参数
如能提供任何帮助或提示,包括深入阅读,将不胜感激。
提前谢谢
编辑:
代码中固定的整数类型大小,打字错误与问题无关
template<typename T, T max, T min>
struct xyzAdc : ADC<T, max, min> // no "<typename T, T max, T min>"
{ // ...............^..^^^..^^^
public:
uint8_t someSpecificADCStuff = 0xac; // arbitrarily chosen
// ....
};
也许吧
投票结束是一个打字错误。在
struct xyzAdc:ADC
中不重复typemane
和t
。你只需要ADC
,因为这就是你想要的ADC
。这就解决了它。谢谢你。投票结束是一个打字错误。在struct xyzAdc:ADC
中不重复typemane
和t
。你只需要ADC
,因为这就是你想要的ADC
。这就解决了它。谢谢。这解决了问题,非常感谢。我在原始代码中修正了整数类型的宽度,因为它与问题无关。这修正了问题,非常感谢。我在原始代码中修复了整数类型的宽度,因为它与问题无关。
xyzADC<uint8_t, 0, 4095> singleEndedADC;