带有函数指针的数组构造函数
Array constructor with function pointers?
我正在尝试创建一个任务列表,该列表应该稍后在主循环()中的任务调度程序中使用。我尝试使用构造函数,但编译器抛出错误 could not covert '{doKeypad,2000,0}' from '<brace-enclosed initializer list>' to 'Task'
struct Task{
void (*proc)(); // Process callback
unsigned long dly; // delay in ms
unsigned long mls = 0; // last run in millis()
};
Task task[] = { // This is much more readable
{doKeypad, 2000, 0}, // but it does not work :)
{doPower, 10, 0},
{doDallas, 800, 0},
{doLcd, 500, 0}
};
void doKeypad(){
// some code here...
}
// rest of code follows - doPower(), doDallas() ...
实现这一目标的最简单方法是什么?我可以做一个函数来手动填充任务数组,但它看起来很丑,而且可读性不是很好。我见过一些类似的问题,但它们是关于类的,对我来说太复杂了:/
哦,我知道了。错误出在结构中:
struct Task{
void (*proc)();
unsigned long dly;
unsigned long mls = 0; // < There should not be = 0
};
删除它后,它可以很好地编译。
查看您的编译器是否正在寻找构造函数:
typedef void( *aproc ) ( );
struct Task{
void (*proc)(); // Process callback
unsigned long dly; // delay in ms
unsigned long mls = 0; // last run in millis()
Task( aproc a, unsigned long b, unsigned long c ) { proc= a; dly= b; mls= c; }
};
相关文章:
- 从数组构造一个跨度<shared_ptr<T>><shared_ptr<void>>
- C++从函数指针数组调用函数
- 是否可以就地构造一个固定大小的数组作为函数参数?
- 节点插件 API 将数组作为函数参数传递
- 将字符串数组作为函数参数传递
- 如何在不使用 C++ 中的数组或函数的情况下查找 N 位数字的所有排列
- C++返回反向字符数组的函数
- 类数组插入函数
- 使用数组数组调用 C++ 函数
- 在 c++ 中将数字转换为矢量数组的函数
- 为什么我的数组或函数不起作用?
- 带有函数指针的数组构造函数
- 对象的数组-STD ::数组 - 构造函数初始化问题
- 将对象类型传递到std ::数组构造函数
- std::initializer_list 作为 std::数组构造函数
- 如何为我的类创建数组构造函数
- Constexpr类与数组构造函数方法
- 列表数组-构造函数和main()中的地址不匹配
- 数组构造函数继承
- 不安全的模板数组构造函数