0

次のような両端キューにポインタを格納したいと思います。

deque<ofImage *> pointerDeque;

void testApp::iTakeAPointer(ofImage * &pointer) {
     cout << "iTakeAPointer  " << &pointer << endl;
     pointerDeque.push_back(pointer);
     cout << "pointerDeque.back() " << pointerDeque.back() << endl;
}

実行すると、次のようになります(キーを押すと関数が呼び出されます):

keyPressed 0xbffff240
iTakeAPointer  0xbffff240
pointerDeque.back() 0x9f2e08

deque.push_back() はコピーを作成するためです。私の質問は、この場合は 0xbffff240 である参照を両端キューで取得するにはどうすればよいですか?

編集:

ありがとう。木を見て木を見ないこともあります。

4

3 に答える 3

4

あなたの診断は正しくありません。これは、ポインターが保持しているアドレスではなく、ポインターのアドレスを出力しています(これは必要なものです)。

cout << "iTakeAPointer  " << &pointer << endl;

&pointerタイプofImage**です。使用するだけpointerです:

cout << "iTakeAPointer  " << pointer << endl;

ofImageに含まれるインスタンスpointerDequeがその存続期間中存在する場合があることに注意してください。現在インスタンスをpointerDeque所有している場合は、の使用を検討してください。所有していない場合は、(または)の使用を検討してください。ofImagestd::unique_ptrstd::shared_ptrboost::shared_ptr

于 2012-07-12T08:00:16.893 に答える
1
cout <<"iTakeAPointer"<<ポインタ<<endl;

アドレスではなく、ポインタ自体を出力してください。

于 2012-07-12T07:59:21.590 に答える
0
void testApp::iTakeAPointer(ofImage * &pointer) {

への変更

void testApp::iTakeAPointer(ofImage * pointer) { // remove ref
于 2012-07-12T08:00:06.363 に答える