1

このエラーを修正しようとしています。まだ 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;
       }
   }

}
4

1 に答える 1

3

この問題は、エラー メッセージから推測されるよりも少し単純ではありません。保護されたコンストラクターがあるため、オブジェクトをクラスのメンバーとして cinder::Serial持つことさえできません。オブジェクト ( のインスタンスへの共有ポインター)を返す静的メンバー関数です。SerialSerial::createSerialRefSerial

したがって、クラス宣言は次のようになります。

class SerialHandler {
         ...
    cinder::SerialRef serial;
         ...
};

create呼び出しは次のSerialHandler::setup()ようになります。

serial = cinder::Serial::create( dev, 115200);  
于 2017-01-05T19:38:00.310 に答える