3

ポインターをパラメーターとして参照する関数に smart ptr を渡すにはどうすればよいですか?

smart_ptr<T> val; // I have this smart pointer

// And I want to pass it to this function, so that this function will fill the smart pointer with proper value
void Foo(T*& sth)
{
    sth = memoryAddress;
}

編集今、私はそれを取得します。みんな、答えてくれてありがとう!

4

3 に答える 3

1

そんなことはできません。T* raw = val.get()" " then " "を使用して生のポインタを渡すことはできますが、内部でそのような生のポインタをFoo(raw)設定することはできません。を設定したい場合は、非 const参照を取るようにします。shared_ptrFooFooshared_ptrshared_ptr

このような:

template<typename T>
Foo(shared_ptr<T>& ptr)
{
    ptr.reset(memoryAddress); // Or assign it, or make_shared, or whatever.
}

shared_ptr<int> intptr;
Foo(intptr);

または、さらに良いことに、参照で取得するのではなく、Fooreturnを作成します。shared_ptr

于 2013-07-23T14:14:54.953 に答える