2

以下は私のC++ class

namespace X {
  class ChildFactory: public Father {
  public:
    static ChildFactor* createChildFactory(const properties* ptr = NULLPTR);
  private :
    // no instances allowed
    ChildFactory();
    ChildFactory(const properties* ptr);
    ~ChildFactory();
  };
}; 

以下は、私がBoost::Python構成を定義した方法です。

BOOST_PYTHON_MODULE(TestPy) 
{
  boost::python::class_<X::ChildFactory, boost::noncopyable>("ChildFactory")
    .def("createChildFactory", &X::ChildFactory::createChildFactory,  boost::python::return_value_policy<boost::python::manage_new_object>() )
    .staticmethod("createChildFactory")
  ;
}

しかし、奇妙なコンパイラ テンプレート エラーが発生しています。

エラーは

destructor could not be generated because a base class destructor is inaccessible
4

3 に答える 3

1

あなたのクラスを次のものとして公開してみてくださいno_init

class_<Foo, boost::noncopyable>("Foo", no_init);
于 2012-08-28T07:58:11.027 に答える
0

destructor could not be generated because a base class destructor is inaccessible

それで解決しましたか?

そうでない場合は、クラスのセクションでコンストラクター関数を宣言したことを意味するため、privateアクセスできません。実際、そのクラスをインスタンス化することはできません。シングルトンとしてのみ使用できます。

あなたの

ChildFactory();
~ChildFactory();

パブリック セクションに送信し、お知らせください。

于 2012-08-28T03:07:06.297 に答える
0

manage_new_objectへのアクセスが必要な作業を必要auto_ptr<>とするものを使用する可能性があります。delete pointer_to_ChildFactory~ChildFactory()

于 2012-08-28T08:08:09.617 に答える