如何解决arduino C++ 类对象中的函数指针不起作用
我有一个类对象数组(TesterClass)。我能够访问它们并正确调用对象中的打印函数。我正在向对象传递一个函数指针,它也调用打印函数。当我尝试“运行”该函数时,没有任何反应。我想弄清楚我做错了什么。
感谢您的帮助。 雅培
这是测试 .ino
#include "Tester.h"
const int size = 5;
typedef bool (*fPointer)(const TesterClass* tester);
TesterClass testers[size];
unsigned long myMillis;
void ListTesters() {
Serial.println(" Lists of all ----");
for (int i = 0; i < size; i++) {
testers[i].PrintMe();
}
}
bool TestFunction(TesterClass* tester) {
tester->PrintMe();
}
void setup()
{
//Open serial port at 115200 baud
Serial.begin(115200);
//Wait until the serial port has opened
while (!Serial) delay(1);
Serial.println("Set Tester Time");
for (int i = 0; i < size; i++) {
TesterClass::fPointer pointer = TestFunction;
testers[i].SetMillis(pointer);
testers[i].PrintMe();
delay (1000);
}
Serial.println("Show Testers");
for (int i = 0; i < size; i++) {
testers[i].PrintMe();
Serial.println("----");
testers[i].RunMe(&testers[i]);
}
Serial.println("display Complete");
}
void loop()
{
delay(5000);
}
这是测试类
class TesterClass
{
public:
typedef bool (*fPointer)(TesterClass* tester); //const TesterClass* task
TesterClass();
void SetMillis(fPointer fPointer);
void PrintMe();
void RunMe(TesterClass* tester);
private:
fPointer _fPointer = NULL;
unsigned long _millis;
bool _inUse = false;
};
#include "Tester.h"
TesterClass::TesterClass()
{
_millis = millis();
}
void TesterClass::SetMillis(TesterClass::fPointer fPointer) {
TesterClass::_millis = millis();
TesterClass::_inUse = true;
TesterClass::_fPointer = fPointer;
}
void TesterClass::RunMe(TesterClass* tester) {
TesterClass::_fPointer;
}
void TesterClass::PrintMe() {
String used = "False - ";
if (_inUse) used = "True - ";
Serial.print(used);
String empty = "Has Pointer - ";
if (_fPointer == NULL) empty = "Null Pointer - ";
Serial.print(empty);
Serial.println(_millis);
}
TesterClass Tester;
输出是
Set Tester Time
True - Has Pointer - 0
True - Has Pointer - 1000
True - Has Pointer - 2000
True - Has Pointer - 3001
True - Has Pointer - 4001
Show Testers
True - Has Pointer - 0
----
True - Has Pointer - 1000
----
True - Has Pointer - 2000
----
True - Has Pointer - 3001
----
True - Has Pointer - 4001
----
display Complete
每个 ---- 下方的线应与其上方的线相同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。