当函数属于类时,未解析的重载函数类型
Unresolved overloaded function type when function belong to a Class
我在我的代码中使用类Ticker,在我的名为HookNinja的类中如下:
void HookNinja::pulser(float period, float onTime) {
_ticker1.attach(period, HookNinja::pulseUp, onTime);
}
void HookNinja::pulseUp(float onTime) {
digitalWrite(2, LOW);
_ticker2.attach(onTime, HookNinja::pulseDown);
}
void HookNinja::pulseDown() {
digitalWrite(2, HIGH);
_ticker2.detach();
}
根据 Ticker 文档,第二个参数是一个函数,但是一个常规参数,我的参数在类中,每次我尝试编译时,我都会得到:
error: no matching function for call to 'Ticker::attach
(float&, <unresolved overloaded function type>, float&)'
这在这里和这里发生,但从这些答案中我不明白我应该在我的代码中做什么来修复它。
注意:_ticker1和 2 在我的头文件中定义。
我怀疑这可能是定义顺序的问题:你首先使用pulseUp()
然后定义它;你首先使用pulseDown()
,然后定义它。
我的建议:尝试颠倒顺序:首先定义pulseDown()
,pulseUp()
下一个,最后定义pulser()
void HookNinja::pulseDown() {
digitalWrite(2, HIGH);
_ticker2.detach();
}
void HookNinja::pulseUp(float onTime) {
digitalWrite(2, LOW);
_ticker2.attach(onTime, HookNinja::pulseDown);
}
void HookNinja::pulser(float period, float onTime) {
_ticker1.attach(period, HookNinja::pulseUp, onTime);
}
PS:对不起,我的英语不好
相关文章:
- 为什么在我的函数类型后使用引用运算符 (&) 允许我修改它返回的值?
- 来自 DLL 的函数调用 [表观调用的括号前面的表达式必须具有(指向-)函数类型]
- 是否有任何建议来统一函数类型限定符并简化可恶的函数类型?
- 关于 C++ 中的函数类型定义
- 用于检测函数类型是否为否的特征
- 函数类型参数的模板参数推导
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- C++无效的函数类型转换
- STL 函数和函数类型与函数指针类型
- 如何将result_of与函数类型定义一起使用
- 将模板(没有规范)传递给 std::thread() 会出现错误:<未解析的重载函数类型>匹配错误
- C++ 编译错误:gnu_printf是无法识别的格式函数类型
- 专门用于"direct"函数类型(与函数指针类型相对)
- 将函数类型作为模板参数传递不会编译
- 通过参数传递 lambda(无函数类型模板)
- 如何在模板参数中分离函数类型返回类型和参数
- 为什么比较函数类型需要指定为模板参数?
- 带有限定符的函数类型定义用例
- 如何声明对函数类型的常量引用
- 非类型模板参数允许各种函数类型?