该文件汇编如下:
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;
}更新
如果我尝试以下几点:
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发布于 2013-07-23 09:08:32
这是一个恼人的问题,我们之前也有过一些时间。我们使用convert_to_container方法修复了它:
Constructor c(boost::assign::list_of(1)(2).convert_to_container<std::vector<int> >() );std::list在构造函数中也存在更多问题。有关适当的答案,请参见of doesn't compile。
发布于 2014-05-09 09:23:39
我使用这个模板来创建std::vector的临时实例:
#include <vector>
namespace Util {
//init vector
template <typename ELEMENT_TYPE > struct vector_of
: public std::vector<ELEMENT_TYPE>
{
vector_of(const ELEMENT_TYPE& t)
{
(*this)(t);
}
vector_of& operator()(const ELEMENT_TYPE& t)
{
this->push_back(t);
return *this;
}
};
}//namespace Util用法如下所示:
Constructor (Util::vector_of<int>(1)(2));构造函数签名如下所示:
Constructor(const std::vector<int>& value)
{
_value = value;
}https://stackoverflow.com/questions/13285272
复制相似问题