我有一个班级Pixel
和一个班级Image
,其功能用于更新像素行。我想初始化像素线。我的问题是初始化矢量。其实我有这个:
bool UpdateLine(std::vector<Pixel>& line, int nb)
{
bool noError = true;
line = new std::vector<Pixel>(nb);
// Do some stuff
return noError;
}
当我尝试这个时,我有:
没有可行的超载&#39; =&#39;
如何初始化矢量?
答案 0 :(得分:3)
您正在使用的表达式:
new std::vector<Pixel>(nb)
返回指向std::vector<Pixel>
的指针(即:std::vector<Pixel> *
),而不是std::vector<Pixel>
,这是您需要的。
必须完成初始化和分配之间的区别:您分配到line
而不是初始化它。
您可以通过赋值运算符创建新向量并将指定<{em>}到<{1}}:
line
答案 1 :(得分:1)
你做的是分配,而不是初始化。
初始化矢量可以这样做:
PHP_EOL
但是,在你的情况下,向量已经在函数之外声明了,所以在这种情况下你使用vector::resize
并执行此操作:
std::vector<int> second (4,100); // four ints with value 100
PS:您不需要line.resize(nb); // creates 'nb' objects 'Pixel'
关键字,除非您为矢量动态分配内存。