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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)