【发布时间】:2017-07-23 15:03:11
【问题描述】:
以下代码在不使用 C++ 类(Arduino 代码)时有效;
MIDI_CREATE_INSTANCE(HardwareSerial, Serial1, midiA);
这将创建一个具有正确类型的变量 midiA。宏定义为:
#define MIDI_CREATE_INSTANCE(Type, SerialPort, Name) \
midi::MidiInterface<Type> Name((Type&)SerialPort);
但是,我想在一个类中使用它(创建一个类变量 midiA),但我无法让它工作。
我现在拥有的是:
class MidiHandler
{
midi::MidiInterface<(HardwareSerial&) Serial1)> midiA;
}
但是,我收到以下错误:
MidiHandler.h: 23:39: error: type\value mismatch at argument 1 in template parameter list for 'template<class SerialPort, class _Settings> class midi::MidiInterface
midi*: MidiInterface<((HardwareSerial&)Serial1)> midiA
我想我可能需要将模板添加到类 MidiHandler 中,我也想知道我是否需要在构造函数中对其进行初始化。
【问题讨论】:
-
你不能用
std::function吗? -
@user0042 以前从未见过,但它只查找函数指针。
-
您可以将
std::function用于各种可调用对象:函数指针、仿函数类、lambda 表达式。 -
好的,我需要进一步了解它,谢谢!
标签: c++ class templates arduino