2016-09-05 44 views
0

私がやりたいことは簡単です。 Arduino:クラスの静的メソッドのstatic変数へのアクセス

  • インスタンス化せずに静的クラス(好ましい シングルトン)を使用して、いくつかの静的 セッター/ゲッター内でいくつかの静的クラス変数を設定

    非常に簡単ですが、インターネットに接続した例は見つかりませんでした。 私は何でもします。未定義の `Test :: _ pin 'エラーへの参照! 私はコンパイルしません。

    私のクラスのヘッダーTEST.H:

    #ifndef Test_h 
    #define Test_h 
    #include "Arduino.h" 
    
    class Test 
    { 
        public: 
        Test(byte pin); 
        static byte getPin(); 
        static byte _pin;  
    
        private: 
    
    }; 
    #endif 
    

    私のクラスコードTest.cppの:

    #include "Test.h" 
    
    Test::Test (byte pin) { 
        _pin = pin; 
    } 
    
    byte Test::getPin(){ 
        return _pin; 
    } 
    

    StaticClassTest.ino:

    #include "Test.h" 
    
    void setup() 
    { 
        Test(5); 
        Serial.begin(9600); 
        Serial.println(Test::getPin(), DEC); 
    } 
    void loop() { } 
    

    私はすでにアクセスを試みました_ピン:

    byte Test::getPin(){ 
        return Test::_pin; // did NOT work, reference error 
    } 
    

    理想的には、_pinは非公開で、getPin()によってアクセス可能である必要があります。 しかし、この変数を設定/取得することは不可能なので、私はより多くの機会を得るために公開しました。

    この単純な状況では何が間違っていますか?

    このクラスでこの変数を設定または取得するにはどうすればよいですか? Test.cppアドオンで

  • 答えて

    1

    byte Test::_pin; 
    

    し、それがうまくいきます。

    これはクラス内での宣言にすぎず、この変数のためのスペースも(定義を追加して)行う必要があります。 similar Q&A on SOall possibilities on cppreference.com

    +0

    詳細情報あなたはそれが働いたTest.cppの中に、この2番目の定義で@KIIVありがとうございました!私はまだ驚いて混乱しています。なぜこの2番目のメモリ割り当てが必要なのでしょうか?この例外のために私は約6時間を過ごしました: - /もう一度、ありがとう!乾杯、 – Trevor

    関連する問題