2016-08-18 48 views
-2

這是一個常見問題,但我無法使其工作。按價值和指針傳遞

這是函數原型: void QSerialPort::setPort(const QSerialPortInfo &serialPortInfo) ,我試圖使用它,就像這樣:

QSerialPortInfo *serialPortInfo = new QSerialPortInfo("H"); 
QSerialPort *SerialPort=new QSerialPort; 
SerialPort->setPort(&serialPortInfo); 

正如我在原型理解我們參考的對象,但我有一個指針QSerialPortInfo ,所以我反正我們&。這一切都不起作用。

我在做什麼錯?

+1

因爲你'serialPortInfo'的類型是'QSerialPortInfo *','&serialPortInfo'的類型是QSerialPortInfo的''**。 – Xiobiq

+4

你用'*'而不是'&'解引用指針。另外,爲什麼這些指針首先是動態內存? – GManNickG

回答

1

QSerialPortInfo不應該被動態分配(這不是真正的QT方式,我知道)。

你的情況應該是SerialPort->setPort(*serialPortInfo),因爲你需要取消引用你的指針來引用變量。

但這個代碼應該這樣寫在這裏:

+0

非常感謝! 我知道,名稱是錯誤的,我在Linux上運行它,因爲我不知道端口是否正確使用了這個「H」。 至於動態分配我不知道這不是最佳的方式.. – Ivan

+1

@Ivan經驗法則 - 避免新的,如果可能的話。在QT有時你不能這樣做,但總是試着去做。 – Starl1ght