簡體   English   中英

在C ++ 14中使用MSGPACK_DEFINE定義可選參數

[英]Defining optional parameters using MSGPACK_DEFINE in C++14

我想使用C ++ 14為msgpack定義可選參數。

現在我有這樣的東西: MSGPACK_DEFINE(varA, varB, varC); ,其中每個變量都是可選的,並且會隨我嘗試打包的特定類型而變化。 例如,一種對象將需要varA和varC,但不需要varB。

有沒有一種干凈的方法可以在一堂課中做到這一點?

@kennytm的評論指出了答案。

我根據您的情況回答完整的工作代碼示例。 MSGPACK_DEFINE_MAP提供基於映射的序列化。 因此,您可以選擇要調整的任何成員變量。

#include <iostream>
#include <sstream>
#include <msgpack.hpp>

struct S1 {
    int varA;
    int varB;
    int varC;
    MSGPACK_DEFINE_MAP(varA, varB, varC);
};

struct S2 {
    int varA;
    int varC;
    MSGPACK_DEFINE_MAP(varA, varC);
};


int main() {
    S1 s1 { 1, 2, 3};
    std::stringstream ss;
    msgpack::pack(ss, s1);
    auto oh = msgpack::unpack(ss.str().data(), ss.str().size());
    auto s2 = oh.get().as<S2>();
    std::cout << s2.varA << "," << s2.varC << std::endl;
}

您也可以運行以下在線編譯器上方的代碼: http : //melpon.org/wandbox/permlink/NbaSjMPdtdwqBp7m

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM