2016-08-18 10 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-wayではありません)。

参考に変数を渡すためにポインタを間接参照する必要があるため、あなたの場合はSerialPort->setPort(*serialPortInfo)にする必要があります。

しかし、このコードは、ここのように記述する必要があります。

+0

ありがとうございます! 私は知っている、名前が間違っている、私はLinux上でそれを実行し、私はこのポート "H"を使用してポートを正確に知らなかったので。 ダイナミックアロケーションについては、これは最適な方法ではないことはわかりませんでした.. – Ivan

+1

@Ivan親指のルール - 可能ならば新しいものは避けてください。 QTでは時にはこれをすることはできませんが、いつも試してみてください。 – Starl1ght

関連する問題