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 dd.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/

10-10 22:44