我想存储当前选定的对象(通过鼠标单击选择),然后在此对象上实现方法。从数组中选择当前选定的对象:
for(int i=0; i<trackList.size(); i++)
{
trackList[i].setSelected(false);
if((trackList[i].isClicked(x,y)) && (!trackList[i].isSelected()))
{
trackList[i].setSelected(true);
currentSelected = trackList[i];
}
}
我是C ++的新手,已经读过指针等等,但我很难理解它们应该在何处以及如何使用。我是否需要将currentSelected对象作为指向trackList [i]的指针?
然后我可以使用指针引用在这个对象上实现方法吗?
非常感谢
编辑: trackList存储Track对象的向量:
std::vector<interface1::Track> trackList;
currentSelected正在存储一个Track对象,我想将方法应用于:
interface1::Track* currentSelected;
答案 0 :(得分:1)
你需要这样做:
currentSelected = &(trackList[i]);
为指针分配trackList[i]
。
另一种方法是使用迭代器,如下所示:
std::vector<interface1::Track> trackList;
std::vector<interface1::Track>::iterator it, currentSelected;
for (it = trackList.begin(); it != trackList.end(); it++)
{
it->setSelected(false);
if((it->isClicked(x,y)) && (!it->isSelected()))
{
it->setSelected(true);
currentSelected = it;
}
}
稍后您可以将currentSelected->setSelected(false);
用于指针和迭代器。