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
- 使用静态类而不实例化(最好是 单身人士)
- 以及在一些静态类中设置一些静态类变量 二传手/接球手
#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个小时:-/再次感谢你!干杯