2012-02-17 7 views
4

私はオブジェクトのポインタを挿入したQListを持っています。これらのオブジェクトの名前を読み取るためにこのQListを反復しようとしています。私がそうするときはいつでも、私はオブジェクト名自体を読むことに反対するこれらのオブジェクトのアドレスを取得しています。私はアドレスの代わりにオブジェクト名をどのように読み取ることができるのだろうかと思いますか?オブジェクトポインタのポインターを取得

QList<MyObject*> newObjectList; 
QList<MyObject*>::iterator i; 

MyObject *pNewObject = new MyObject(name); 
MyObject.append(pNewObject); 

for (i = newObjectList.begin(); i != newObjectList.end(); i++) { 
    cout << "\n" << *i << "\n"; 
} 

答えて

3

私は逆参照しているときは、あなたのオブジェクトから名前を取得する関数を呼び出す必要があります。このようなもの:

for (i = newObjectList.begin(); i != newObjectList.end(); i++) { 
    // i right now is the iterator, and points to a pointer. So this will need to be 
    // dereferenced twice. 
    cout << "\n" << (*i)->getName() << "\n"; 
} 
+0

ありがとうございます。それは働いた:)矢印表記( - >)を使用する代わりにですか? – Jon

+0

*: '(*(* i))で2つの逆参照を行うことができます。getName();' –

+0

ありがとうございます:) – Jon

2

イテレータI(すなわち*i)をderenferenceあなたはポインタであるタイプMyObject*のオブジェクトへの参照AA、あなたがもう一度あなたのオブジェクトへの参照を取得するために間接参照する必要があります。

*(*i) 
+1

「** i」で十分ですが、括弧は必要ありません。 – Fanael

+0

私はちょうど行を "cout <<"に変更してみました\ n "<< *(* i)<<" "\ n"; "私はエラー "C678:バイナリ '<<': 'QTextStream'型の左側のオペランドを取る演算子が見つかりませんでした(または受け入れ可能な変換はありません)" – Jon

関連する問題