2016-10-10 17 views
-1

を使用して、コンストラクタでは、ネストされたプライベートクラスを含むコンストラクタを持つクラスを公開しますImplをプライベートともアクセスすでに削除された機能のエラーですので、私が試した現在の方法は、エラーが発生しますので、それを行う方法:は、私は、Pythonを高めるために新たなんだと私はこのようになりますクラスを公開しているよブーストのPython

BOOST_PYTHON_MODULE(libA) 
{ 
class_<A::Impl>("Impl") 
    .def("C", &A::Impl::C) 
class_<A>("A",init<std::unique_ptr>) 
    .def("B", &A::B) 
    } 

答えて

1

PIMPLイディオムの全体のポイント、それはプライベートとに対して完全に透過的であるということですクラスのユーザー。あなたはそれを公開しません。

class_<A, noncopyable>("A", init<>()) 
    .def("B", &A::B) 
; 
+0

はありがとう:あなたは何をする必要がありますどのような

はそれを明確にAはコピーできませんことを確認です。これは完全に機能しました。私のような新しいユーザーにとっては、非コピー可能キーワードがブーストネームスペースにあります。 –

+0

@arunabhsharma 'noncopyable'はキーワードではなく*クラス*です。 – Barry

関連する問題