提问人:Ashok 提问时间:10/8/2023 最后编辑:Ashok 更新时间:10/8/2023 访问量:20
Glib 变体元组反序列化
Glib Variant Tuple Deserialization
问:
我正在尝试在元组下方反序列化,但在获取内部向量变体时遇到问题。 检索了初始 2 个值,但向量变体给我带来了一些麻烦,我无法理解为什么它不起作用
Glib::Variant < std::tuple < std::uint32_t, // First unsigned integer
std::uint32_t, // First unsigned integer
std::vector < // Array of dictionaries
std::tuple < std::uint32_t, // Inner unsigned integer
std::int32_t, // Inner unsigned integer
std::vector < // Array of dictionaries
std::map < Glib::ustring, // Dictionary key (string)
Glib::VariantBase // Dictionary value (variant)
>
> > > , std::vector < // Array of dictionaries
std::map < Glib::ustring, // Dictionary key (string)
Glib::VariantBase // Dictionary value (variant)
>
> > > response_variant;
//here is my de - serialization code:
Glib::Variant < std::uint32_t > firstVariant;
Glib::Variant < std::uint32_t > secondVariant;
call_result.get_child(firstVariant, 0);
std::uint32_t first_value = firstVariant.get();
std::cout << "fist_value: " << first_value << std::endl;
call_result.get_child(secondVariant, 1);
std::uint32_t second_value = secondVariant.get();
std::cout << "second_value: " << second_value << std::endl;
Glib::Variant <
std::vector <
std::tuple < std::uint32_t, std::int32_t,
std::vector <
std::map < Glib::ustring,
Glib::VariantBase >> > >
>
thirdVariant;
call_result.get_child(thirdVariant, 2);
// Check if the variant is an array
if (thirdVariant.get_type_string() == "a(uia{sv})") {
std::size_t innerTupleCount = thirdVariant.get_n_children();
std::cout << "innerTupleCount: " << innerTupleCount << std::endl;
Glib::Variant < std::tuple < std::uint32_t, std::int32_t, std::vector < std::map < Glib::ustring, Glib::VariantBase >>> > baseVariant;
for (std::size_t i = 0; i < innerTupleCount; ++i) {
Glib::Variant < std::tuple < std::uint32_t, std::int32_t, std::vector < std::map < Glib::ustring, Glib::VariantBase >>> > tupleVariant;
//thirdVariant.get_child(tupleVariant, i); //compilation error no matching function for call
//tupleVariant = thirdVariant.get_child(i); //Compilation error no match for 'operator='
}
} else {
std::cerr << "Unexpected variant type: " << thirdVariant.get_type_string() << std::endl;
}
我能够获得 vector 的子项数,但是当我尝试检索元组代码时,给我编译错误。可能是我无法理解这里的对象!
我尝试在下面做,但遇到编译错误:
//thirdVariant.get_child(tupleVariant, i); //compilation error no matching function for call
//tupleVariant = thirdVariant.get_child(i); //Compilation error no match for 'operator='
寻求帮助,提前致谢。
我尝试了多种方法,但没有任何效果
//thirdVariant.get_child(tupleVariant, i); //compilation error no matching function for call
//tupleVariant = thirdVariant.get_child(i); //Compilation error no match for 'operator='
答: 暂无答案
评论