在c ++中存储当前对象

时间:2013-03-02 16:39:10

标签: c++

我想存储当前选定的对象(通过鼠标单击选择),然后在此对象上实现方法。从数组中选择当前选定的对象:

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;

1 个答案:

答案 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);用于指针和迭代器。