gpt4 book ai didi

c++ - vector中元素的boost::variant和打印方法

转载 作者:行者123 更新时间:2023-11-30 00:40:47 27 4
gpt4 key购买 nike

 std::vector< boost::variant<std::string, int> > vec;
std::string s1("abacus");
int i1 = 42;
vec.push_back(s1);
vec.push_back(i1);
std::cout << vec.at(0).size() << "\n";

当我尝试运行此代码时,出现以下错误:

main.cpp:68: error: ‘class boost::variant<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_>’ has no member named ‘size’
make: *** [main.o] Error 1

然而,作为一个字符串,它应该有一个 size() 方法。我不确定出了什么问题。请注意,将最后一行替换为:

std::cout << vec.at(0) << "\n";

将按预期打印“abacus”。

最佳答案

being a string it should have a size() method

这不是 string – 这是一个variant .你首先需要告诉编译器你知道有一个string内部 - 即使用 boost::get<std::string>(vec[0]) 检索它.

请务必阅读 Boost.Variant tutorial .

关于c++ - vector中元素的boost::variant和打印方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5180034/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com