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 ++を初めて使用し、ポインターなどを読みましたが、どこでどのように使用する必要があるかを理解するのに苦労しています。trackList[i] が何であれ、currentSelected オブジェクトをポインターとして持つ必要がありますか?

ポインター参照を使用して、このオブジェクトにメソッドを実装できますか?

どうもありがとう

編集: trackList は Track オブジェクトのベクトルを格納しています:

std::vector<interface1::Track> trackList;

currentSelected には、メソッドを適用したい Track オブジェクトが格納されています。

interface1::Track* currentSelected;
4

1 に答える 1

1

あなたがする必要があります:

 currentSelected = &(trackList[i]);

のアドレスの値をポインタに割り当てるためtrackList[i]

もう 1 つの方法は、次のようにイテレータを使用することです。

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 に答える