2017-02-13 6 views
0

私はROS std_msgsFloat32をfloat64に送信しようとしていますが、自動的にダウンキャストされません。どのようにしてstd_msgs :: Float64をstd_msgs :: Float32に安全に変換できますか?Float64〜Float32

//currentLocation.theta is a Float64, thetaPublish accepts Float32 
thetaPublish.publish(currentLocation.theta); 

答えて

1

あなたがこれを行うことができるはずです::ダウンキャストの問題で

コード

std_msgs::Float32 theta32; 
theta32.data = static_cast<float>(theta.data); 
thetaPublish.publish(theta32); 

あなたは明示的にdoubleからfloatへdataをコピーする必要があります。

+0

ありがとう、私は今それをテストします! <3 –

+0

タイプ 'std_msgs :: Float64'からタイプ 'float'への無効なキャスト theta32.data =(float)theta.data –

+0

うーん、キャストの有無にかかわらず私のために働く。 Linux上でIndigoを使用しています。奇妙なマクロがある場合にのみ、 'static_cast (theta.data)'を試してみてください。 –

関連する問題