从另一个班级长期访问

时间:2017-08-27 09:40:15

标签: c++ arduino

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等人进行过尝试。我做错了什么?

1 个答案:

答案 0 :(得分:3)

如果要修改类(成员)变量,则必须首先创建此类的实例。

然后,最好的方法是将detectorSniffer设置为类Detector的方法(或朋友函数),之后您可以访问&amp;从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);