我想創建一個基本的解析方法,它使用C++將vector <uint8_>
作爲輸入。根據各個字節的實際值,此方法應返回一個表示此數據的結構。根據C++中的輸入,我可以使用相同的方法返回不同的對象嗎?
例如:
輸入1:{0x10, 0x02, 0x03}
輸入2 {0x20, 0x05, 0x02}
的第一個字節應該代表對象的類型與爲0x10 =立方體和爲0x20 =球體。
第二個字節取決於立方體的寬度或球體直徑的類型。
第三個字節是立方體的體積或球體的質量。
是否可以創建這需要基於該值這個矢量這兩種不同的結構中的一個內的輸入矢量,並返回一個方法:
struct cube
{
int width;
int volume;
};
struct sphere
{
int diameter;
int mass;
};
4答案了。我想知道爲什麼「工會」還沒有被提及。我錯過了任何禁止使用工會的東西嗎?或者以不同的方式提問:您(OP)是否對使用聯合類型的解決方案感興趣? Answerers,什麼阻止你使用工會? – Yunnosch
除了我不知道如何使用它們以外,沒有什麼能夠阻止我使用union類型;)如果有使用union的優雅解決方案,爲什麼不呢? – p0fi
你是否需要返回類型的解析結果?我使用了一個通過指針的out參數(C++的方式是引用)。如果需要,我改變返回一個union-struct。在我的工作中(小型嵌入式系統),我期望處理結構參數並通過指針返回值,這就是爲什麼。但我可以適應你的需求。 – Yunnosch