gpt4 book ai didi

c++ - 使用 boost::assign::list_of

转载 作者:IT老高 更新时间:2023-10-28 23:13:45 26 4
gpt4 key购买 nike

这样编译:

std::vector<int> value = boost::assign::list_of(1)(2);

但不是这个:

Constructor(std::vector<int> value)
{
}

Constructor (boost::assign::list_of(1)(2));

是否有一种用于初始化传递给构造函数的 vector 的单线解决方案?

更好的是,如果构造函数通过引用来复制到类变量:

Constructor(std::vector<int>& value)
{
_value = value;
}

更新

如果我尝试以下操作:

enum Foo
{
FOO_ONE, FOO_TWO
};

class Constructor
{
public:
Constructor(const std::vector<Foo>& value){}
};

Constructor c(std::vector<Foo>(boost::assign::list_of(FOO_ONE)));

我得到编译器错误:

error C2440: '<function-style-cast>' : cannot convert from 'boost::assign_detail::generic_list<T>' to 'std::vector<_Ty>'
1> with
1> [
1> T=Foo
1> ]
1> and
1> [
1> _Ty=Foo
1> ]
1> No constructor could take the source type, or constructor overload resolution was ambiguous

最佳答案

这是一个烦人的问题,我们之前也有过一段时间。我们使用 convert_to_container 方法修复它:

Constructor c(boost::assign::list_of(1)(2).convert_to_container<std::vector<int> >() );

std::list 在构造函数中使用也存在更多问题。见 Pass std::list to constructor using boost's list_of doesn't compile寻找合适的答案。

关于c++ - 使用 boost::assign::list_of,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13285272/

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