Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从模板继承<;类型名称T、T最大值、T最小值>;具有多个typename模板参数的结构_C++_C++11_Templates_Inheritance - Fatal编程技术网

C++ 从模板继承<;类型名称T、T最大值、T最小值>;具有多个typename模板参数的结构

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最大值=

这是我在这个平台上的第一个问题,多年来我一直把它当作一个感恩的访问者。请对我温柔一点

我目前正在为ADC实现一个接口,可以与不同类型的微控制器和不同的体系结构一起使用

遗憾的是,这限制了可用的C++版本到11,以保证MCU之间的兼容性。p> 其思想是定义一个通用的API ADC结构,其中传递一个固定宽度整数类型的typename以及ADC的最大可实现最小值和最大值。这两个值打算存储为constexpr

因此,我提出了以下建议:

模板
结构模数转换器
{
公众:
静态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;