2014-12-18 118 views
2

我正在嘗試使下面的示例代碼工作。我已閱讀了幾個教程和Q & A,但我無法使其工作。在所有可能的情況下,我對課程的理解是缺乏的,但我從中學習。希望我不會得罪人:-)在成員之間共享對象

我工作的串口通信,我試圖使用這個庫的回調版本: http://www.webalice.it/fede.tft/serial_port/serial_port.html

的具體問題是在評論碼。

修訂 - 我想通了,下面的代碼工作:-)

這裏的SerialPort.h文件:

#include "AsyncSerial.h" 

class SerialPort 
public: 
    void portOpen(); 
    void portWrite(); 
private: 
    CallbackAsyncSerial serial; 
}; 

而且SerialPort.cpp:

#include "SerialPort.h" 

void SerialPort::portOpen() { 
// serial = CallbackAsyncSerial("COM1", 115200); Doesn't work 
serial.open("COM1", 115200); //This works :-) 
} 

void SerialPort::portWrite() { 
    serial.writeString("Hello\n"); 
} 

void main() { 
    SerialPort objt; 
    objt.portOpen(); 
    objt.portWrite(); 
} 

感謝您的幫助!

回答

2

" //How do I make the object "serial" accessible in the other members? "

使它成爲一個成員變量本身

class SerialPort 
public: 
    void portSet(); 
    void portOpen(); 
    void portWrite(); 

private: 
    CallbackAsyncSerial serial; 
}; 

void SerialPort::portOpen() { 
    serial = CallbackAsyncSerial("COM1", 115200); 
} 
+0

@soje你有沒有嘗試什麼,我居然提議?從[鏈接的文檔](http://www.webalice.it/fede.tft/serial_port/serial_port.html)中,'CallbackAsyncSerial'提供了一個合適的默認構造函數,但我無法找到複製構造函數或賦值運算符。我沒有線索,這應該如何工作。也許你一直在碰到一個糟糕的教程。 – 2014-12-19 21:42:26

+0

對不起!我錯過了第二部分的變化。我更新了上面的代碼,現在我正在嘗試,並且出現此錯誤: .. \ asyncserial.h(181):error C2248:'boost :: noncopyable _ :: noncopyable :: operator =':can not訪問在類'boost :: noncopyable _ :: noncopyable'中聲明的私有成員 – soje 2014-12-19 22:05:15

+0

我需要最後一部分的變體。我已將我的問題中的代碼更新爲工作版本。感謝您的幫助和聖誕快樂:-) – soje 2014-12-20 19:05:00

1

爲了讓其他成員可以訪問它,它應該是一個成員變量。這意味着要在類SerialPort定義中聲明它。