0

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

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;
4

1 回答 1

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);同时使用指针和迭代器。

于 2013-03-02T16:47:12.210 回答