Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
212 views
in Technique[技术] by (71.8m points)

c++ - Anonymous Types in IDL C++11 for OpenDDS

I am using a DDS and need to be able to send data received from various devices. I have files from an IDL file using RTI DDS. However, it seems like these IDLs are different as OpenDDS using C++11 IDL mapping. The struct

struct ddsServicerDynamicsData {
        ddsVector3_dbl rpos_eci;        //position relative to Earth in ECI coordinates (x, y, z) [m]
        ddsVector3_dbl rvel_eci;        //velocity relative to Earth in ECI coordinates (x_dot, y_dot, z_dot) [m/s]
        ddsVector3_dbl vrot_eci;        //rotation velocity around pricipal axes in ECI frame (phi_dot, theta_dot, psi_dot); TODO: units [rad/s] or [deg/s]
        ddsVector3_dbl arot_eci;        //angular orientation in ECI frame (phi, theta, psi); TODO: units [rad] or [deg]
        ddsVector3_dbl cgshift;         //vector from arbitrary reference point to S/C center of gravity (example: vector from base of robot arm to CG) in S/C coordinates
        float antennastate0[3];         //antenna position vector (azimuth, elevation, polarization); TODO: units [rad] or [deg]
        float antennastate1[3];
        float armstate0[7];             //7DOF robotic arm joint angles (epsilon 0 to 6); TODO: units [rad] or [deg]
        float armstate1[7];
        float armstate2[7];
        float armstate3[7];
};

throws the message

Error - opendds_idl: "DataTypes.idl", line 53: field has an anonymous type.

I read up on anonymous types and see that the problem is that the array values are not declared but do not know how to make it not anonymous as this datatype would receive three values from the device. In the Developer's Guide of IDL to C++ Language Mapping the only information about anonymous types is

"Anonymous IDL types are deprecated by the IDL specification and are not supported in the IDL to C++11 language mapping specification. The IDL compiler that implements this mapping must throw an error when it detects an anonymous type." (https://www.omg.org/spec/CPP11/1.1/PDF) Section 6.2

I'm not really sure how to go around this error message or how to fix it.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...