2016-08-18 131 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