11. embind auto downcasting 类的多态

#include 
#include <string>

using namespace emscripten;

class BaseClass {
public:
    BaseClass() = default;
    virtual std::string invoke(const std::string &str) {
        return str + " - from 'BaseClass'";
    }
};

class DerivedClass : public BaseClass {
public:
    DerivedClass() = default;
    std::string invoke(const std::string &str) override {
        return str + " - from 'DerivedClass'";
    }
};

BaseClass* getDerivedInstance() {
    return new DerivedClass();
}

EMSCRIPTEN_BINDINGS(module) {
  class_("BaseClass")
      .constructor<>()
      .function("invoke", &BaseClass::invoke);
  class_base>("DerivedClass")
      .constructor<>()
      .function("invoke", &DerivedClass::invoke);
  function("getDerivedInstance", &getDerivedInstance, allow_raw_pointers());
}

 

你可能感兴趣的:(11. embind auto downcasting 类的多态)