c – 使用boost :: assign :: list_of

c – 使用boost :: assign :: list_of,第1张

概述这编译: std::vector<int> value = boost::assign::list_of(1)(2); 但不是这样的: Constructor(std::vector<int> value){}Constructor (boost::assign::list_of(1)(2)); 是否有一个单行解决方案来初始化传递给构造函数的向量? 更好的是,如果构造函数通过引用引用来复制 这编译:
std::vector<int> value = boost::assign::List_of(1)(2);

但不是这样的:

Constructor(std::vector<int> value){}Constructor (boost::assign::List_of(1)(2));

是否有一个单行解决方案来初始化传递给构造函数的向量?

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

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

UPDATE

如果我尝试以下:

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>          with1>          [1>              T=Foo1>          ]1>          and1>          [1>              _Ty=Foo1>          ]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全部内容,希望文章能够帮你解决c – 使用boost :: assign :: list_of所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1235371.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存