2016-05-08 4 views
2

私のプロジェクトでは、スマートポインタと生ポインタが混在しています。いくつかの関数は、生の関数とスマート関数の両方で機能する必要があります。関数では、ポインタには->,=および*しか使用されません。私の質問は、私は複数の引数を持っている場合、または私は私がスマートと生ポインタの両方を渡すことができる何かがある場合、私はすべての関数を2回以上書く必要がある場合です。私は、ラッパークラスarroudポインタまたはこれのようなものについて考えていた。私が推薦する何生ポインタとスマートポインタの混合関数のオーバーロード

+0

'='あなたはどのタイプから割り当てますか?いつも同じタイプですか?所有権は手に負えない、一般的にどうするかわからない。それ以外の場合は、テンプレートを使用するか、消去を入力します。 – Yakk

答えて

0

(この質問は、コード例から多くの利益を得るであろう、しかし、私は答えることをしようとします。)

参照またはのconst参照を通過した後、*演算子を使用することです関数に引数を渡すときには、どちらの種類のポインタでも使用できます。

あなたの関数は生やスマートで動作するはずなので、これは不可能であることは自明ではありません.Dは、実装が所有権を持って何もする必要がないということです。何らかの理由でshared_ptrのコピーを取るように。これは所有権を気にしないので、参考になるように書かれたほうがよいということです。

関連する問題