2017-08-27 15 views
2

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 
}; 

私はdetectorSniffer()からDetectorクラスにunsigned long型の変数にアクセスしようとしています関数。私はDetector dd.cを試しました。私は間違って何をしていますか?

答えて

3

クラス(メンバー)変数を変更する場合は、まずこのクラスのインスタンスを作成する必要があります。その後あなたがdetectorSnifferからそのメンバ変数を変更&にアクセスできるクラスDetectorのその後の最善の方法は、メソッド(またはフレンド関数)として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); 
+0

のインスタンスへの参照を渡すかdetectorSnifferを検出クラスのメンバメソッドを作る – Sil

+1

厥なぜか*または* ... –

+0

おっと、私はあなたの答えを誤解しました。申し訳ありません:P – Sil