我使用這個庫:https://github.com/Agamnentzar/bluetooth-serial-port的unique_ptr <>導致compliation誤差在C++
BTSerialPortBinding::Create(address, channelID)
Returns new instance of BTSerialPortBinding object
address: string containint bluetooth address of the device
channelID: ID of the serial port channel
我有一個語句:
unique_ptr<BTSerialPortBinding>bt(BTSerialPortBinding::Create(d1.address, 1));
當我分離與ArduinoDevice聲明的聲明。 h和ArduinoDevice.cpp在構造函數中初始化如下:
std::unique_ptr<BTSerialPortBinding> bt;
bt.reset(BTSerialPortBinding::Create("93:83:, 1));
當我將這些語句,我得到了以下錯誤:
ArduinoDevice &ArduinoDevice::operator =(const ArduinoDevice &)': attempting to reference a deleted function
這是由錯誤
dev = ArduinoDevice("/dev/tty.IP-DevB");
Process.h
#ifndef __PROCESS_H
#define __PROCESS_H
#define _USE_MATH_DEFINES
#include "ResonantLowpassFilter.h"
#include "ArduinoDevice.h"
//==============================================================================
/**
*/
class AudioProcessor : public AudioProcessor
{
public:
//==============================================================================
WahwahAudioProcessor();
~WahwahAudioProcessor();
void prepareToPlay (double sampleRate, int samplesPerBlock);
void releaseResources();
void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages);
AudioProcessorEditor* createEditor();
int getNumParameters();
int getNumPrograms();
int getCurrentProgram();
void setCurrentProgram (int index);
const String getProgramName (int index);
void changeProgramName (int index, const String& newName);
float centreFrequency_, q_;
void updateFilterArduino();
ArduinoDevice dev; //instance to an Arduino device from which sensor data is read
};
#endif // _PROCESS
引用的Process.cpp文件的相關位ArduinoDevice.h
#ifndef ArduinoDevice_h
#define ArduinoDevice_h
#include <stdio.h>
#include "BTSerialPortBinding.h"
#include <memory>
class ArduinoDevice
{
public:
ArduinoDevice(const char *dev="");
void connect();
void start(void);
void stop(void);
void read(void);
/**
Disconnects from Arduino device
**/
~ArduinoDevice();
private:
const char *device; //port address of the device (e.g. "/dev/tty.FireFly-E552-SPP")
std::unique_ptr<BTSerialPortBinding> bt; //bt serial port
void close(void);
};
#endif
編輯:
我使用Windows 10,Visual Studio 2015和Microsoft的C++編譯器。我也使用額外的JUCE庫(https://www.juce.com/)。
dev = ArduinoDevice("/dev/tty.IP-DevB"));
dev在高於其ArduinoDevice
的一個實例Process.h文件我的構造看起來像這樣宣稱:
ArduinoDevice::ArduinoDevice(const char *dev)
{
device = dev;
bt.reset(BTSerialPortBinding::Create("98:D3:31:FD:11:1A", 1));
}
在ArduinoDevice現在我已經嘗試過這一點。 cpp和聲明.h但我仍然得到與上面相同的錯誤:
ArduinoDevice&&(const char *dev);
{
data = dev.data;
dev.data = nullptr;
}
在行'dev = ArduinoDevice(「/ dev/tty.IP-DevB」); ','dev'是什麼? (顯示其聲明) –
''dev'也在'bt.reset(BTSerialPortBinding :: Create(dev,1));'中提到。我猜你使用同一個名稱'dev'來處理兩個不同的事情,這是令人困惑的 –
同時顯示你使用的編譯器和命令行 –