16. embind external constructor 工厂使用


#include 
#include 

using namespace emscripten;

class baseClass {
  int age;
  std::string name;
 public:
    baseClass(int age, std::string name) : age(age), name(name) {};
    std::string getName() {
        return name;
    }
};


baseClass* makeClassFactory(int age, std::string name) {
    class xClass : public baseClass {
     public:
        xClass (int age, std::string name) : baseClass(age, name) {}
  };
    return dynamic_cast(new xClass(age, name));
}

EMSCRIPTEN_BINDINGS(module) {
    class_("xClass")
        .constructor(&makeClassFactory, allow_raw_pointers())
        .function("getName", &baseClass::getName);
}