は、私は、関数の作成に記載された質問を参照してください次のコード、C++ - Fred *からauto_ptrへの暗黙のキャストはありますか<Fred>?
#include <new>
#include <memory>
using namespace std;
class Fred; // Forward declaration
typedef auto_ptr<Fred> FredPtr;
class Fred {
public:
static FredPtr create(int i)
{
return new Fred(i); // Is there an implicit casting here? If not, how can we return
// a Fred* with return value as FredPtr?
}
private:
Fred(int i=10) : i_(i) { }
Fred(const Fred& x) : i_(x.i_) { }
int i_;
};
を見ました。
はコメント
に基づいて更新
//はい、コードはVC8.0 エラーC2664渡すことはできませんありがとう「のstd :: auto_ptrを< _Ty>を:: auto_ptrは(のstd :: auto_ptrは< _Ty> &)スロー():フレッド*」からパラメータ1を変換することはできません '' を 'のstd :: auto_ptrを< _Ty> &' のコードはC++よくある質問12.15からコピーされた
。
ただし、以下の変更を行った後、
replace
return new Fred(i);
with
return auto_ptr<Fred>(new Fred(i));
このコードは、VC8.0コンパイラを渡すことができます。しかし、これが正しい修正かどうかはわかりません。
このコードはコンパイルされましたか?それともあなたはそれを見ましたか? –
元の投稿はありません。 – q0987
これは正しい修正です。はい。 –