2012-02-24 12 views
3

こんにちは、最初の質問私はここに多くの感謝を事前に求めています。 クラスのオブジェクトへの一連のポインタを格納するためにベクトルを使用しています。私は、特定のオブジェクトの関数にアクセスできるように、私は回り越えることができるイテレータを必要とします。これは私の運勢でこれを試みるための私の現在のコードです。 IntoteliSenseは、「メンバーが利用できません」と伝えています。イテレータを使用してベクトルに格納されたクラスオブジェクトのメソッドにアクセスする。どうやって?

vector <CSquare*> pSquares; 
    //filled in vector 
    vector<CSquare*>::iterator tempIt = pSquares.begin(); 
    tempIt->getName(); 

他に何を追加するのかわかりませんが、何か他のものが必要な場合は、私にお伝えください。

もう一度ありがとうございます。

編集:問題が解決しました。私は2回引用を解除しなければなりませんでした。次のコードは動作します、私はちょうど誰かが同じヘルプが必要な場合は、これを残して、とにかく見てくれてありがとうと思った。

vector <CSquare*> pSquares; 
    //filled in vector 
    vector<CSquare*>::iterator tempIt = pSquares.begin(); 
    (**tempIt).getName(); 

答えて

5

欲しいものを得るためには、イテレータを逆参照する必要があることに注意してください。これはvector<CSquare*>ですので、あなたのイテレータは、あなたがこれを行う必要があるので、効果的にへのポインタのポインタ対CSquareです:

(*tempIt)->getName(); 
+0

乾杯した人は、文字通り2分前にそれを分かりました。xD私は他のコードからそれを書いてみると思います。 – Danny

+0

それは時々起こります。これは「ラバーダック効果」と呼ばれています(http://c2.com/cgi/wiki?RubberDuckingを参照)。 –

+0

私はコンセプトを知っていましたが、非常に興味深い読書は、私の仕事からの素晴らしい気晴らしとして役立ちました。 – Danny

4

あなたは余分な間接参照が必要です。

(*tempIt)->getName(); 

理由をベクトル内に格納されているものはポインタなので、*tempItCSquareオブジェクトにアクセスするために逆参照する必要があるポインタへの参照です。

関連する問題