にはstd :: shared_ptrのを変換しますは、暗黙的変換が</p> <pre><code>struct A { int val = 42; operator int() const { return val; } </code></pre> <p>ので、私はこのようにそれを使用することができますintにのは、私が指定したクラスAがあるとしましょうタイプ
auto a_ptr = std::shared_ptr<A>(new A);
int a_int = a_ptr; // ???
タイプAの変数が暗黙的にint型に変換されているのと同じようにしたいと思いますスマートなポインタで。 どうすれば実現できますか?
UPDATE
私は多分私は間違った方法を尋ねて申し訳ありません。 本物はもう少し複雑です。 私がのstd :: shared_ptrのを保持するためにQVariantを使用しています。今の 私はそれを行うためのヘルパー関数を持っています、このような何かを
QVariant variant = QVariant() << a_ptr;
しかし、私は自動的にそれをしたい:私はこれを行うQVariantに自分のポインタを配置する必要がある場合
QVariant & operator<< (QVariant& v, const std::shared_ptr<A> & aPtr);
:
QVariant variant = a_ptr;
それをしないでください。 '* a_ptr'と書いてください。 –
新しいスマートポインタは、通常のポインタと同様に動作します。通常のポインタには、逆参照などがあります。 –
オペレータの過負荷は、ほとんどの場合悪い工学です。それを避けてください。 –