c++ - 访问 C 中的类变量(Arduino Timezone 库)

标签 c++ c class

我正在尝试使用 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/

相关文章:

c++ - C++ 中的 size_t 和 int 有什么区别?

c - 在 Unix C 中使用管道

python - 关于python和类的问题

ruby - 如何跨同一模块的类访问类实例变量?

c++ - 复制赋值运算符应该作为一般规则利用 std::swap 吗?

c++ - 在 CBaseRenderer 上实现帧步骤

xerces - Xerces-C 中的 XPath 支持

在 Windows 上找不到 syslog.h

c - 在 C 中按下向上箭头键时,如何立即采取行动?

c++ - 在基类中设置一些值后,可以设置指向派生类的指针吗?