std::unique_ptrのようなクラスを自作したいと思っています。
具体的には以下のようなことです。
c++
1class C4 { 2public: 3 static void Delete(C4*) {} 4}; 5 6class C5 : public C4 { 7public: 8 static void Delete(C4*) {} 9}; 10 11void g2() { 12 using C = unique_ptr<C4, decltype(&C4::Delete)>; 13 using D = unique_ptr<C5, decltype(&C4::Delete)>; 14 C c = D(new C5(), &C5::Delete); 15}
しかし、単純に実装すると、以下のコードのg()関数の
C c = D(new C2(), &C2::Delete);
の部分でエラーが出てしまいます。
おそらくカスタムデリータの関連でエラーが出ているとは思うのですが、どのように実装すれば良いのかわかりません。
よろしくお願い致します。
c++
1class C1 { 2public: 3 static void Delete(C1*) {} 4}; 5 6class C2 : public C1 { 7public: 8 static void Delete(C1*) {} 9}; 10 11template<class T, class U> 12class C3 { 13public: 14 C3(T* t, U u) 15 : 16 t_(t), 17 u_(u) 18 { 19 ; 20 } 21private: 22 T* t_; 23 U u_; 24}; 25 26void g() { 27 using C = C3<C1, decltype(&C1::Delete)>; 28 using D = C3<C2, decltype(&C1::Delete)>; 29 C c = D(new C2(), &C2::Delete); 30}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/30 12:27
2018/07/30 12:35
2018/07/30 15:39