Constant Member Functions

本文介绍了C++中常量成员函数的概念及使用方法。通过示例详细解释了如何声明和定义常量成员函数,以及它们如何确保不修改所属对象的状态。同时展示了常量成员函数在实际编程中的应用。

Declaring a member function with the const keyword specifies that the function is a "read-only" function that does not modify the object for which it is called.

To declare a constant member function, place the const keyword after the closing parenthesis of the argument list. The const keyword is required in both the declaration and the definition. A constant member function cannot modify any data members or call any member functions that aren't constant.

// constant_member_function.cpp
class Date
{
public:
   Date( int mn, int dy, int yr );
   int getMonth() const;     // A read-only function
   void setMonth( int mn );   // A write function; can't be const
private:
   int month;
};

int Date::getMonth() const
{
   return month;        // Doesn't modify anything
}
void Date::setMonth( int mn )
{
   month = mn;          // Modifies data member
}
int main()
{
   Date MyDate( 7, 4, 1998 );
   const Date BirthDate( 1, 18, 1953 );
   MyDate.setMonth( 4 );    // Okay
   BirthDate.getMonth();    // Okay
   BirthDate.setMonth( 4 ); // C2662 Error
}

WARNING: library Preferences claims to run on all architecture(s) and may be incompatible with your current board which runs on esp8266 architecture(s). In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:16, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:43, from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Adapters/BlinkerMQTT.h: In member function 'virtual char* BlinkerMQTT::token()': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Adapters/BlinkerMQTT.h:144:50: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 144 | char * token() { if (!isMQTTinit) return ""; else return MQTT_KEY_MQTT; } | ^~ In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:16, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:43, from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Adapters/BlinkerMQTT.h: In member function 'virtual char* BlinkerMQTT::lastRead()': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Adapters/BlinkerMQTT.h:963:17: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 963 | else return ""; | ^~ In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:95, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:17, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:43, from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApiBase.h: In member function 'char* BlinkerBridge_key::getName()': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApiBase.h:196:29: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 196 | else return "false"; | ^~~~~~~ In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:96, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:17, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:43, from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerProtocol.h: In member function 'char* BlinkerProtocol::deviceName()': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerProtocol.h:104:86: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 104 | char * deviceName() { if (isInit) return conn->deviceName(); else return ""; } | ^~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerProtocol.h: In member function 'char* BlinkerProtocol::authKey()': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerProtocol.h:105:83: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 105 | char * authKey() { if (isInit) return conn->authKey(); else return ""; } | ^~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerProtocol.h: In member function 'char* BlinkerProtocol::token()': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerProtocol.h:106:79: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 106 | char * token() { if (isInit) return conn->token(); else return ""; } | ^~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerProtocol.h: In member function 'char* BlinkerProtocol::dataParse()': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerProtocol.h:257:86: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 257 | char* dataParse() { if (canParse) return conn->lastRead(); else return ""; } | ^~ In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Adapters/BlinkerMQTT.h:46, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:16, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:43, from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h: At global scope: c:\users\administrator\documents\arduino\libraries\blinker\src\blinker\blinkerconfig.h:226:41: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 226 | #define BLINKER_CMD_BUILTIN_SWITCH "switch" | ^~~~~~~~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:913:71: note: in expansion of macro 'BLINKER_CMD_BUILTIN_SWITCH' 913 | BlinkerWidgets_string _BUILTIN_SWITCH = BlinkerWidgets_string(BLINKER_CMD_BUILTIN_SWITCH); | ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:17, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:43, from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h: In member function 'char* BlinkerApi::bridgeKey(uint8_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:7831:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 7831 | else return ""; | ^~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h: In member function 'char* BlinkerApi::bridgeName(uint8_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:7838:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 7838 | else return "false"; | ^~~~~~~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h: In member function 'char* BlinkerApi::widgetName_str(uint8_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:8467:17: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 8467 | else return ""; | ^~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h: In member function 'char* BlinkerApi::widgetName_joy(uint8_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:8474:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 8474 | else return ""; | ^~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h: In member function 'char* BlinkerApi::widgetName_rgb(uint8_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:8481:17: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 8481 | else return ""; | ^~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h: In member function 'char* BlinkerApi::widgetName_int(uint8_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:8487:17: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 8487 | else return ""; | ^~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h: In member function 'char* BlinkerApi::widgetName_tab(uint8_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker/BlinkerApi.h:8493:17: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 8493 | else return ""; | ^~ In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:43, from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h: At global scope: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:34:22: error: member 'BlinkerApi <unnamed class>::<anonymous>' with constructor not allowed in anonymous aggregate 34 | class BlinkerESPMQTT : public BlinkerApi | ^ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:34:22: error: member 'BlinkerApi <unnamed class>::<anonymous>' with destructor not allowed in anonymous aggregate c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:34:22: error: member 'BlinkerApi <unnamed class>::<anonymous>' with copy assignment operator not allowed in anonymous aggregate c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:348:21: error: member 'BlinkerMQTT <unnamed class>::Transp' with constructor not allowed in anonymous aggregate 348 | BlinkerMQTT Transp; | ^~~~~~ c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:348:21: error: member 'BlinkerMQTT <unnamed class>::Transp' with copy assignment operator not allowed in anonymous aggregate c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerESPMQTT.h:349:2: error: abstract declarator '<unnamed class>' used as declaration 349 | }; | ^ In file included from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:45:29: error: 'Blinker' does not name a type; did you mean 'BlinkerApi'? 45 | BlinkerESPMQTT Blinker; | ^~~~~~~ | BlinkerApi In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerWidgets.h:6, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:266, from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerBridge.h: In constructor 'BlinkerBridge::BlinkerBridge(char*, blinker_callback_with_string_arg_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerBridge.h:12:20: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerApi'? 12 | bNum = Blinker.attachBridge(_key, _func); | ^~~~~~~ | BlinkerApi c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerBridge.h: In member function 'void BlinkerBridge::attach(blinker_callback_with_string_arg_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerBridge.h:19:13: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerApi'? 19 | Blinker.freshAttachBridge(Blinker.bridgeKey(bNum), _func); | ^~~~~~~ | BlinkerApi c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerBridge.h: In member function 'void BlinkerBridge::print(T1)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerBridge.h:26:24: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerApi'? 26 | if (strcmp(Blinker.bridgeName(bNum), BLINKER_CMD_FALSE) != 0) | ^~~~~~~ | BlinkerApi c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerBridge.h: In member function 'void BlinkerBridge::print(T1, T2)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerBridge.h:35:24: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerApi'? 35 | if (strcmp(Blinker.bridgeName(bNum), BLINKER_CMD_FALSE) != 0) | ^~~~~~~ | BlinkerApi In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerWidgets.h:9, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:266, from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerButton.h: In constructor 'BlinkerButton::BlinkerButton(char*, blinker_callback_with_string_arg_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerButton.h:12:20: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerApi'? 12 | wNum = Blinker.attachWidget(_name, _func); | ^~~~~~~ | BlinkerApi c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerButton.h: In member function 'void BlinkerButton::attach(blinker_callback_with_string_arg_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerButton.h:19:13: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerApi'? 19 | Blinker.freshAttachWidget(Blinker.widgetName_str(wNum), _func); | ^~~~~~~ | BlinkerApi c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerButton.h: In member function 'void BlinkerButton::print(const String&)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerButton.h:205:13: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerApi'? 205 | Blinker.printArray(Blinker.widgetName_str(wNum), buttonData); | ^~~~~~~ | BlinkerApi In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerWidgets.h:10, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:266, from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerNumber.h: In member function 'void BlinkerNumber::_print(const String&)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerNumber.h:90:17: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerApi'? 90 | Blinker.printNumArray(numName, value); | ^~~~~~~ | BlinkerApi c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerNumber.h:153:13: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerApi'? 153 | Blinker.printArray(numName, numberData); | ^~~~~~~ | BlinkerApi In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerWidgets.h:11, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:266, from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerImage.h: In constructor 'BlinkerImage::BlinkerImage(char*, blinker_callback_with_int32_arg_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerImage.h:12:20: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerApi'? 12 | wNum = Blinker.attachWidget(_name, _func); | ^~~~~~~ | BlinkerApi c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerImage.h: In member function 'void BlinkerImage::attach(blinker_callback_with_int32_arg_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerImage.h:21:13: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerApi'? 21 | Blinker.freshAttachWidget(Blinker.widgetName_int(wNum), _func); | ^~~~~~~ | BlinkerApi c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerImage.h: In member function 'void BlinkerImage::print(uint8_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerImage.h:35:13: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerApi'? 35 | Blinker.printArray(Blinker.widgetName_int(wNum), ImageData); | ^~~~~~~ | BlinkerApi In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerWidgets.h:12, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:266, from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerRGB.h: In constructor 'BlinkerRGB::BlinkerRGB(char*, blinker_callback_with_rgb_arg_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerRGB.h:13:20: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerRGB'? 13 | wNum = Blinker.attachWidget(_name, _func); | ^~~~~~~ | BlinkerRGB c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerRGB.h: In member function 'void BlinkerRGB::attach(blinker_callback_with_rgb_arg_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerRGB.h:20:13: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerRGB'? 20 | Blinker.freshAttachWidget(Blinker.widgetName_rgb(wNum), _func); | ^~~~~~~ | BlinkerRGB c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerRGB.h: In member function 'void BlinkerRGB::print(uint8_t, uint8_t, uint8_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerRGB.h:39:13: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerRGB'? 39 | Blinker.printArray(Blinker.widgetName_rgb(wNum), rgbData); | ^~~~~~~ | BlinkerRGB c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerRGB.h: In member function 'void BlinkerRGB::print(uint8_t, uint8_t, uint8_t, uint8_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerRGB.h:58:13: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerRGB'? 58 | Blinker.printArray(Blinker.widgetName_rgb(wNum), rgbData); | ^~~~~~~ | BlinkerRGB In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerWidgets.h:14, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:266, from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerJoystick.h: In constructor 'BlinkerJoystick::BlinkerJoystick(char*, blinker_callback_with_joy_arg_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerJoystick.h:14:24: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerRGB'? 14 | wNum = Blinker.attachWidget(_name, _func); | ^~~~~~~ | BlinkerRGB c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerJoystick.h: In member function 'void BlinkerJoystick::attach(blinker_callback_with_joy_arg_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerJoystick.h:23:17: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerRGB'? 23 | Blinker.freshAttachWidget(Blinker.widgetName_joy(wNum), _func); | ^~~~~~~ | BlinkerRGB In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerWidgets.h:16, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:266, from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerSlider.h: In constructor 'BlinkerSlider::BlinkerSlider(char*, blinker_callback_with_int32_arg_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerSlider.h:13:20: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerRGB'? 13 | wNum = Blinker.attachWidget(_name, _func); | ^~~~~~~ | BlinkerRGB c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerSlider.h: In member function 'void BlinkerSlider::attach(blinker_callback_with_int32_arg_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerSlider.h:20:13: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerRGB'? 20 | Blinker.freshAttachWidget(Blinker.widgetName_int(wNum), _func); | ^~~~~~~ | BlinkerRGB c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerSlider.h: In member function 'void BlinkerSlider::_print(const String&)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerSlider.h:83:13: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerRGB'? 83 | Blinker.printArray(Blinker.widgetName_int(wNum), sliderData); | ^~~~~~~ | BlinkerRGB In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerWidgets.h:17, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:266, from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerSwitch.h: In member function 'void BlinkerSwitch::attach(blinker_callback_with_string_arg_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerSwitch.h:16:13: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerRGB'? 16 | Blinker.attachSwitch(_func); | ^~~~~~~ | BlinkerRGB c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerSwitch.h: In member function 'void BlinkerSwitch::print(const String&)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerSwitch.h:20:13: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerRGB'? 20 | Blinker.print(BLINKER_CMD_BUILTIN_SWITCH, _state); | ^~~~~~~ | BlinkerRGB In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerWidgets.h:18, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:266, from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerTab.h: In constructor 'BlinkerTab::BlinkerTab(char*, blinker_callback_with_table_arg_t, blinker_callback_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerTab.h:13:20: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerTab'? 13 | wNum = Blinker.attachWidget(_name, _func, _func2); | ^~~~~~~ | BlinkerTab c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerTab.h: In member function 'void BlinkerTab::attach(blinker_callback_with_table_arg_t, blinker_callback_t)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerTab.h:21:13: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerTab'? 21 | Blinker.freshAttachWidget(Blinker.widgetName_tab(wNum), _func, _func2); | ^~~~~~~ | BlinkerTab c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerTab.h: In member function 'void BlinkerTab::print()': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerTab.h:83:13: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerTab'? 83 | Blinker.printArray(Blinker.widgetName_tab(wNum), tabData); | ^~~~~~~ | BlinkerTab In file included from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/BlinkerWidgets.h:19, from c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Blinker.h:266, from E:\sketch_aug12a\sketch_aug12a.ino:5: c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerText.h: In member function 'void BlinkerText::print(T)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerText.h:53:13: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerTab'? 53 | Blinker.printArray(textName, textData); | ^~~~~~~ | BlinkerTab c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerText.h: In member function 'void BlinkerText::print(T1, T2)': c:\Users\Administrator\Documents\Arduino\libraries\Blinker\src/Functions/BlinkerText.h:98:13: error: 'Blinker' was not declared in this scope; did you mean 'BlinkerTab'? 98 | Blinker.printArray(textName, textData); | ^~~~~~~ | BlinkerTab Multiple libraries were found for "EEPROM.h" Used: C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\EEPROM Not used: C:\Users\Administrator\Documents\Arduino\libraries\ATMAC_EEPROM Multiple libraries were found for "Blinker.h" Used: C:\Users\Administrator\Documents\Arduino\libraries\Blinker Not used: C:\Users\Administrator\Documents\Arduino\libraries\BarePoller Not used: C:\Users\Administrator\Documents\Arduino\libraries\GyverBlinker Multiple libraries were found for "Ticker.h" Used: C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\Ticker Not used: C:\Users\Administrator\Documents\Arduino\libraries\Ticker Not used: C:\Users\Administrator\Documents\Arduino\libraries\SimpleTicker exit status 1 Compilation error: exit status 1
08-14
【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
先看效果: https://pan.quark.cn/s/3756295eddc9 在C#软件开发过程中,DateTimePicker组件被视为一种常见且关键的构成部分,它为用户提供了图形化的途径来选取日期与时间。 此类控件多应用于需要用户输入日期或时间数据的场景,例如日程管理、订单管理或时间记录等情境。 针对这一主题,我们将细致研究DateTimePicker的操作方法、具备的功能以及相关的C#编程理念。 DateTimePicker控件是由.NET Framework所支持的一种界面组件,适用于在Windows Forms应用程序中部署。 在构建阶段,程序员能够通过调整属性来设定其视觉形态及运作模式,诸如设定日期的显示格式、是否展现时间选项、预设的初始值等。 在执行阶段,用户能够通过点击日历图标的下拉列表来选定日期,或是在文本区域直接键入日期信息,随后按下Tab键或回车键以确认所选定的内容。 在C#语言中,DateTime结构是处理日期与时间数据的核心,而DateTimePicker控件的值则表现为DateTime类型的实例。 用户能够借助`Value`属性来读取或设定用户所选择的日期与时间。 例如,以下代码片段展示了如何为DateTimePicker设定初始的日期值:```csharpDateTimePicker dateTimePicker = new DateTimePicker();dateTimePicker.Value = DateTime.Now;```再者,DateTimePicker控件还内置了事件响应机制,比如`ValueChanged`事件,当用户修改日期或时间时会自动激活。 开发者可以注册该事件以执行特定的功能,例如进行输入验证或更新关联的数据:``...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值