通过引用传递向量,但更改不会坚持 c++
Passing vector by reference, but alterations won't stick c++
void RemoveGreenEffect::processImage(vector<Point>& points)
{
for (int i = 0; i < points.size(); ++i)
{
points[i].setGreen(0);
}
}
该函数适当地引入向量并在局部进行更改。但是,当程序返回到main时,它不会保留更改。有人能解释一下我做错了什么吗?如果有帮助,下面是main中的调用函数。
for (int i = 0; i < ppm.getRows(); ++i)
{
my_effect->processImage(picture.getPicture()[i]);
}
my_effect是一个基类指针,指向派生对象RemoveGreenEffect。getPicture()是Point对象的向量的向量,所以getPicture()[i]是Point类的向量。目标是一次一行地删除图片中的所有绿色值像素,但同样,该更改仅在局部有效。
编辑,这里是getPicture()vector<vector<Point>> PointFormatPicture::getPicture()
{
return _picture;
}
下面是_picture
vector<vector<Point>> _picture;
改为按引用返回:
vector<vector<Point>>& PointFormatPicture::getPicture()
{
return _picture;
}
相关文章:
- 坚持编译QDoc以在Windows上构建qt5
- 在Windows上坚持Jupyter:内核无法启动
- 坚持将双指针管理的内存复制到二维数组
- 我可以使用匿名lambdas坚持静态值
- 取消引用unique_ptr并且更改结构中的值不会坚持
- OpenGL使对象坚持到相机
- 坚持理解记忆对齐
- 坚持理解以下宏定义
- 我有点坚持德尔福的动态虚拟通道
- 为什么他们坚持在下面的示例中使用"extern"说明符?
- 为什么Visual Studio 2017坚持认为我在其他地方没有打开的文件在编辑器之外被修改了?
- 命名空间在C 中碰撞,坚持寻找解决方案
- 我如何安全地坚持使用C 常量参考
- 坚持认为学校的C 日历代码
- HippoMocks坚持要摧毁Mock
- vector::pushback坚持使用复制构造函数,尽管提供了移动构造函数
- 坚持使用我对欧拉项目#4的解决方案
- 我应该使用地图、3D 数组还是坚持使用堆栈
- 为什么 C++ 坚持这种符号系统
- 坚持在Linux上使用Geany