c++ - 为什么要在 C++ 中预定义模板参数类型?
问题描述
我正在为一个项目编写一些代码,我正在使用一个名为 APA102 的库。在这个库中,有一个标题APA102
定义如下的类,
template<uint8_t dataPin, uint8_t clockPin>
class APA102 : public APA102Base {
...
我很困惑为什么有人会使用模板类来定义一个可以很容易地作为类构造函数参数传递的值。
为了扩展我最初的问题,我试图创建一个使用此类APA102
作为参数的类方法,但是如果我尝试执行以下操作,则无法将参数定义为这种类型:
void someMethod(APA102<uint8_t, uint8_t> ¶m)
当我不断收到错误消息时
错误:'template<unsigned char dataPin, unsigned char clockPin> class Pololu::APA102' 的模板参数列表中参数 1 的类型/值不匹配 virtual void someMethod(APA102<const uint8_t, const uint8_t> &ledStrip) = 0;
我可以将APA102
对象作为参数的唯一方法是定义两个uint8_t
值,然后首先将它们用作模板参数。例如,这有效:
const uint8_t clockPin = 11;
const uint8_t dataPin = 12;
virtual void someMethod(APA102<clockPin, dataPin> &ledStrip) = 0;
谁能帮我理解这些带有预定义模板参数的模板类?为什么我得到了我所做的错误?
解决方案
推荐阅读
- json - 如何检查post请求中json.body中是否有空值
- firebase - 刷新页面时显示从 Firebase 上传的图像时出现问题
- android - 多模块应用程序中的 Firebase Analytics - 如何?
- media-queries - 响应式媒体查询问题打破了将浏览器拖到更小的尺寸
- java - 如何在java中获得连续的周数和年份?
- node.js - 我如何显示来自后端 nodejs 的数字数据并在徽章中表达
- pytorch - 分割任务中的掩码值为 0 或 255。我该如何解决这个问题?
- swift - 在 Swift 5 中由 UITabBarController 控制的 UIViewController 之间传递数据
- arrays - 不显示具有“itemArray”绑定的面板中的按钮
- ruby-on-rails - 在rails中传递对象ID认为嵌套形式