новый оператор не с глобальной переменной - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь использовать оператор new для создания глобальной ссылки, объявляя tNMEA2000 &NMEA2000=*(new tNMEA2000_stm()); вне каких-либо функций.

Когда я использую tNMEA2000 &NMEA2000=*(new tNMEA2000_stm()); вне каких-либо функций, он в конечном итоге получает значениеNULLPTR.Если я объявлю это внутри функции, она будет работать правильно.

Это не реальный код, а упрощенная версия.Я не включил фактические определения классов

#include "nmea_wrapper.h" //This defines the tNMEA2000_stm class
#include "NMEA2000.h" //This defines the tNMEA2000 class that tNMEA2000_stm inherits from

tNMEA2000 &NMEA2000 = *(new tNMEA2000_stm()); //This ends up with a NULLPTR

void setup(){
  tNMEA2000 &NMEA2000 = *(new tNMEA2000_stm()); //This correctly initializes the memory
}

Из того, что я могу понять, объявление его глобально должно работать, а не быть установленным в NULLPTR.Я не уверен, является ли это извращением использования newlib, и я не могу найти какую-либо документацию, которая бы указала мне один путь от другого, если он действителен или нет.

...