gpt4 book ai didi

c++ - 使用 Teensy 3 的新位置

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:14:39 24 4
gpt4 key购买 nike

我在 Arduino/Teensy 环境中有一个 C++ 类,它在“.h”文件中定义。在“.cpp”文件中,我试图用一些代码进行“新放置”。我收到以下错误:

oscillator.h:17: error: no matching function for call to 'operator new(sizetype, AudioSynthWaveform*)'
_current_tone = static_cast<AudioStream*>(new (&_waveform) AudioSynthWaveform);
^
/tmp/build578ae2c22656d87e9d0d68db21416349.tmp/sketch/oscillator.h:17:68: note: candidate is:
In file included from /opt/arduino-1.6.7/hardware/teensy/avr/cores/teensy3/Printable.h:25:0,
from /opt/arduino-1.6.7/hardware/teensy/avr/cores/teensy3/Print.h:39,
from /opt/arduino-1.6.7/hardware/teensy/avr/cores/teensy3/Stream.h:24,
from /opt/arduino-1.6.7/hardware/teensy/avr/cores/teensy3/HardwareSerial.h:169,
from /opt/arduino-1.6.7/hardware/teensy/avr/cores/teensy3/WProgram.h:16,
from /opt/arduino-1.6.7/hardware/teensy/avr/cores/teensy3/Arduino.h:1,
from /tmp/build578ae2c22656d87e9d0d68db21416349.tmp/sketch/Synthesizer.ino.cpp:1:
/opt/arduino-1.6.7/hardware/teensy/avr/cores/teensy3/new.h:12:8: note: void* operator new(size_t)
void * operator new(size_t size);
^
/opt/arduino-1.6.7/hardware/teensy/avr/cores/teensy3/new.h:12:8: note: candidate expects 1 argument, 2 provided
exit status 1
no matching function for call to 'operator new(sizetype, AudioSynthWaveform*)'

所以看起来问题是在 Teensy 核心库中 placement new 没有定义 - 运算符只需要一个参数,而不是两个。

如果我像这样在“.h”文件中定义自己的 placement new 实现并将其包含在上述类的头文件中:

#ifndef NEW_H
#define NEW_H

void *operator new(size_t size, void *ptr){
return ptr;
}

void operator delete(void *obj, void *alloc){
return;
}

#endif //NEW_H

它似乎可以工作,但前提是我在头文件中的方法中使用 placement new。如果我将代码移出 header 并移入“.cpp”实现文件,我会收到类似的错误,即只需要一个参数。

有办法解决吗?

最佳答案

我发现解决这个问题最直接的方法就是打开

/opt/arduino-1.6.7/hardware/teensy/avr/cores/teensy3/new.h

并放置原型(prototype)

void *operator new(size_t size, void *ptr);

void operator delete(void *obj, void *alloc);

多次重载运算符,然后是相关“.cpp”文件中的函数。

不确定为什么一开始没有包含...

关于c++ - 使用 Teensy 3 的新位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35465405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com