我正在尝试使用 Arduino 的时区库。 https://github.com/JChristensen/Timezone/blob/master/examples/Clock/Clock.pde
这里,时区是全局初始化的,然后在loop()中打印
//Line numbers used for reference. Not part of code.
1.TimeChangeRule myDST = {"EDT", Second, Sun, Mar, 2, -240}; //Daylight time = UTC - 4 hours
2.TimeChangeRule mySTD = {"EST", First, Sun, Nov, 2, -300}; //Standard time = UTC - 5 hours
3.Timezone myTZ(myDST, mySTD);
我想根据用户输入更改 myTZ(dst,std)。这将发生在函数内部。但是当我尝试这样做时,即使在第 3 行之后
myTZ(mySTD, mySTD);
我收到错误
no matching function for call to 'Timezone::Timezone()'
我不太熟悉类(class)。如何使用 myTZ 作为全局实例,并在其他函数中设置/更改/使用它?
最佳答案
好的,我已经查看了提供的链接中的Timezone
定义。似乎一旦使用 TimeChangeRule
创建对象,就无法再从代码中更改这些对象(除非通过调用 readRules
,这不是您想要的)。
因此,您可以像现在一样拥有 Timezone
对象:
Timezone myTZ(myDST, mySTD);
尝试修改它的函数可能是:
void tzObjectModifier(Timezone &rTZ) {
//perform all the operations(including reading user's input) to initialize newDST and newSTD TimeChangeRule objects
rTZ(newDST, newSTD);
//other additional statements
}
针对 myTZ
对象调用函数,例如:
tzObjectModifier(myTZ);
函数退出后,全局myTZ
将包含您在函数内部设置的内容。
关于c++ - 访问 C 中的类变量(Arduino Timezone 库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30587551/