Я просто попытался использовать новый оператор размещения, предложенный Скоттом Мейерсом в «Effectice C++ во встроенной среде».Размещение новое для абстракции регистра MCU, предложенное Meyers
DefaultMcuType::PortRegister* p = new(reinterpret_cast<void*>(0x05)) DefaultMcuType::PortRegister;
Тогда я получаю ошибки происходит некорректно:
register.cc: In function 'int main()':
register.cc:30:90: error: no matching function for call to 'operator new(sizetype, void*)'
DefaultMcuType::PortRegister* p = new(reinterpret_cast<void*>(0x05)) DefaultMcuType::PortRegister;
^~~~~~~~~~~~
<built-in>: note: candidate: void* operator new(unsigned int)
<built-in>: note: candidate expects 1 argument, 2 provided
<built-in>: note: candidate: void* operator new(unsigned int, std::align_val_t)
<built-in>: note: no known conversion for argument 2 from 'void*' to 'std::align_val_t'
register.cc:30:35: warning: unused variable 'p' [-Wunused-variable]
DefaultMcuType::PortRegister* p = new(reinterpret_cast<void*>(0x05)) DefaultMcuType::PortRegister;
^
Я действительно не могу понять, что я делаю неправильно.
У вас не хватает '#include' –
Mine