我正在尝试修复此错误,我仍在学习cinder和c ++。 有人可以帮忙解决这个问题。提前谢谢
错误: “'SerialHandler'的构造函数必须明确初始化没有默认构造函数的成员'serial'”
SerialHandler.h
class SerialHandler
{
public :
SerialHandler(){}; // <- error here
cinder::Serial serial; // <-
void setup();
bool isDone;
bool isonline;
};
SerialHandler.cpp
#include "SerialHandler.h"
void SerialHandler::setup()
{
isDone =true;
try {
Serial::Device dev = Serial::findDeviceByNameContains("cu.usbmodem1411");
serial.Serial::create( dev, 115200);
console() << "Serial Connected" << std::endl;
isonline =true;
}
catch( ... ) {
console() << "There was an error initializing the serial device!" << std::endl;
isonline =false;
const vector<Serial::Device> &devices( Serial::getDevices() );
for( vector<Serial::Device>::const_iterator deviceIt = devices.begin(); deviceIt != devices.end(); ++deviceIt ) {
console() << "Device for MAIN?: " << deviceIt->getName() << endl;
}
}
}
答案 0 :(得分:3)
问题比错误消息中的假设要简单一些。 cinder::Serial
有一个受保护的构造函数,因此您甚至不能将Serial
对象作为类的成员。 Serial::create
是一个静态成员函数,它返回一个SerialRef
对象(它是指向Serial
实例的共享指针。)
所以你的班级声明应该是这样的:
class SerialHandler {
...
cinder::SerialRef serial;
...
};
create
中的SerialHandler::setup()
来电应该是这样的:
serial = cinder::Serial::create( dev, 115200);