Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class Arduino:访问类';s静态法_Class_Arduino_Static Methods_Static Variables - Fatal编程技术网

Class Arduino:访问类';s静态法

Class Arduino:访问类';s静态法,class,arduino,static-methods,static-variables,Class,Arduino,Static Methods,Static Variables,我想做的只是 使用静态类而不实例化(最好是 单身人士) 以及在一些静态类中设置一些静态类变量 二传手/接球手 看起来非常简单,但我在互联网上找不到任何例子。 无论我做什么,都会付出;未定义对“Test::\u pin”的引用错误! 我不编译 我的类标题测试。h: #ifndef Test_h #define Test_h #include "Arduino.h" class Test { public: Test(byte pin); static byte get

我想做的只是

  • 使用静态类而不实例化(最好是 单身人士)
  • 以及在一些静态类中设置一些静态类变量 二传手/接球手
看起来非常简单,但我在互联网上找不到任何例子。 无论我做什么,都会付出;未定义对“Test::\u pin”的引用错误! 我不编译

我的类标题测试。h:

#ifndef Test_h
#define Test_h
#include "Arduino.h"

class Test
{
    public:
    Test(byte pin);
    static byte getPin();
    static byte _pin;    

    private:

};
#endif
My class code 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() { }
我已尝试通过以下方式访问\u pin:

byte Test::getPin(){
    return Test::_pin;  // did NOT work, reference error
}
理想情况下,_pin应该是私有的:并且可以通过我的getPin()访问; 但由于不可能设置/获取此变量,我将其公开以获得更多机会

在这个简单的上下文中有什么错?


如何在此类中设置/获取此变量?

Test.cpp
中添加:

byte Test::_pin;
它会起作用的

它只是类内部的声明,您还必须为这个变量留出一个空间(通过添加定义)


更多信息请参见和
Test.cpp
add:

byte Test::_pin;
它会起作用的

它只是类内部的声明,您还必须为这个变量留出一个空间(通过添加定义)


和中的更多信息

谢谢@KIIV在Test.cpp中的第二个定义它起作用了!我仍然感到惊讶和困惑。为什么我们需要第二次内存分配?因为这个例外,我花了大约6个小时:-/再次感谢你!干杯,谢谢@KIIV在Test.cpp中的第二个定义,它成功了!我仍然感到惊讶和困惑。为什么我们需要第二次内存分配?因为这个例外,我花了大约6个小时:-/再次感谢你!干杯