【问题标题】:C++ declaring a static object pointer in a classC++在类中声明一个静态对象指针
【发布时间】:2022-09-30 14:53:36
【问题描述】:

我想在这样的类中将对象指针声明为静态:

class sequencer
{
  static HardwareTimer *MyTim;
  public:
  // etc. etc.
}

HardwareTimer sequencer::*MyTim;

this post 中的用户也有类似的问题,不同之处在于我的是一个指向他们不是的对象的指针。

我使用的格式是从链接帖子中的格式复制而来的,但我收到以下编译器错误:

in function `sequencer::setup()\':
main.cpp:(.text._ZN9sequencer5setupEv+0x60): undefined reference to `sequencer::MyTim\'

如果需要更多信息,这是在 Arduino 环境中使用 stm32duino 内核。我使用的库是here。提前致谢。

  • HardwareTimer sequencer::*MyTim -> HardwareTimer* sequencer::MyTim。请注意* 位于不同的位置。
  • HardwareTimer sequence::*MyTimMyTim 定义为指向sequencer 类型为HardwareTimer 的非静态成员的指针。您需要的是HardwareTimer *sequencer::MyTim,它将sequence::MyTim 声明为指向HardwareTimer 的指针(这与sequencer 类中的声明一致)。

标签: c++ class arduino static stm32


【解决方案1】:

如果要更改对象,则无需使用 static 关键字。您可以简单地使对象的指针指向堆中内存中的另一个位置。

例如:

HardwareTimer *MyTim = nullptr; // declaration of empty pointer.

如果你想更改指针指向的位置,你可以简单地这样做:

*MyTim  = new sequencer;

确保你删除前一个对象并确保您声明的指针来自父类.

delete MyTim // deletes the pointer;

  

然后你可以像上面那样指向一个新对象。

希望这可以帮助 祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多