Detector.cpp:
#include "Detector.h"
void detectorSniffer(uint8_t *buf, uint16_t len) {
if(buf[12] == 0xA0 || buf[12] == 0xC0) {
c++; //Failing to read C long in the detector class
}
};
void Detector::start() {
Serial.print("start");
}
Detector.h
#include <ESP8266WiFi.h>
#include "Mac.h"
class Detector {
public:
void start();
unsigned long c = 0; // Variable
};
我正在尝试从
Detector
函数访问detectorSniffer()
类中的无符号长型变量。我尝试了Detector d
和d.c
等。我究竟做错了什么? 最佳答案
如果要修改类(成员)变量,则必须首先创建该类的实例。
然后最好的方法是将detectorSniffer
设置为Detector
类的方法(或 friend 函数),然后可以从detectorSniffer
访问和修改其成员变量。
void Detector::detectorSniffer(uint8_t *buf, uint16_t len)
{
if(buf[12] == 0xA0 || buf[12] == 0xC0) {
c++;
}
};
// Calling
Detector d;
d.start();
d.detectorSniffer(/*parameters*/);
或传递对
Detector
实例的引用void Detector::detectorSniffer(uint8_t *buf, uint16_t len, Detector & d) {
if(buf[12] == 0xA0 || buf[12] == 0xC0) {
d.c++; //Failing to read C long in the detector class
}
};
// Calling
Detector d;
d.start();
detectorSniffer(/*some parameters*/, d);
关于c++ - 长时间访问另一个类(class),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45903613/