我是C ++的新手,可以帮我指针吗?我有一个结构
struct Slice
{
Slice(): {}
SliceObj *slObj;
};
和向量:
std::vector<Slice> slices;
因此,在mouce touch上,我想使用此对象来更改他的公共变量:
for (vector<Slice>::iterator it = slices.begin(); it != slices.end(); ++it) {
Slice slice0 = slices[0];
SliceObj *slObj = slice0.slObj;
slObj->drag(slObj, x, y);
}
当然,在拖动方法中,我制作:slObj-> rect.x = x + 0.1;并不能带来任何好处。
请帮我解决这个问题,我不明白如何从向量的另一个对象中小心地用*获得obj,然后小心地更改它的参数。
问题在于“如何从slice0仔细获取SliceObj”,而不是var的地址,而是这个实例。
因此,在这里我需要获取slObj参数,以便将来可以使slObj.rect.x = 1;
更新:
当我使用slObj-> drag方法时,我总是只看到像这样的奇怪数字:
但是,当glutPostRedisplay调用时,它在方法上重绘
void SliceObj::draw(SliceObj *slObj)
那一切都很好!
最佳答案
您应该通过迭代器访问元素:
for (vector<Slice>::iterator it = slices.begin(); it != slices.end(); ++it) {
Slice& slice0 = *it //Get the element using iterator (Note the reference, is to avoid copy)
SliceObj *slObj = slice0.slObj;
slObj->drag(slObj, x, y);
}
但是,如果您具有支持C ++ 11的编译器,则可以使用基于范围的for循环来简化操作:
for( auto& slObj : slices )
{
liceObj *slObj = slice0.slObj;
slObj->drag(slObj, x, y);
}
关于c++ - vector 与结构中的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20668636/