以下のような構造を使って、このように使うことができます。C++匿名構造への参照を渡すことができますか?
NMEADecodedSentence s;
auto & gga = s.GGA;
auto alt = gga.Alt;
しかし、このようなとしての機能に匿名の構造体への参照を渡すことが可能です。その場合は
SomeFunc(gga);
、どのような関数のシグネチャは次のようになりますか?私の考えは、構造の名前を付けることなくあなたが傾けることはできませんが、私はそれがわからないほど巧妙な方法があるかどうかを知りたかっただけです!
struct NMEADecodedSentence
{
GNSSSentenceType Type;
GNSSTalkerId TalkerId;
union
{
struct
{
char Time[10]; // UTC time - hhmmss.ss
char Lat[13]; // Latitude (degrees & minutes) - ddmm.mmmmm
char NS; // North/South indicator
char Long[14]; // Longitude (degrees & minutes) - dddmm.mmmmm
char EW; // East/West indicator
uint8_t Quality; // Quality indicator for position fix
uint8_t NumSV; // Number of satellites used (0-12)
float HDOP; // Horizontal Dilution of Precision
float Alt; // Altitude above mean sea level - meters
}GGA;
struct // Recommended minimum data
{
char Time[10]; // UTC time - hhmmss.ss
char Status; // Status, V = Navigation receiver warning, A = Data valid
char Lat[13]; // Latitude (degrees & minutes) - ddmm.mmmmm
char NS; // North/South indicator
char Long[14]; // Longitude (degrees & minutes) - dddmm.mmmmm
char EW; // East/West indicator
float Spd; // Speed over ground - knots
float COG; // Course over ground - degrees
char Date[7]; // UTC Date - ddmmyy
}RMC;
struct // Course over ground and ground speed
{
float COGT; // Course over ground (true) - degrees
float COGM; // Course over ground (magnetic) - degrees
float Kph; // Speed over ground - kph
}VTG;
};
};
関数宣言で 'auto'を使いますか? –
を言い換えて:あなたはこれを行うことができますが、**あなたは**あなたですか?宣言の中の名前を省略することは、受信関数の余分な定型文の価値があるのでしょうか?本当にそれから何を得るのですか? –
@underscore_d宣言は何らかのライブラリやベンダー提供のコードなので、変更する危険はない可能性があります(外部ソースを持つヘッダーを編集することは常に悪い考えです)。 – Swift