Coder Social home page Coder Social logo

Comments (5)

cykoder avatar cykoder commented on June 27, 2024

which branch are you using? v2/sharedptr or v1? either way, some things ive learned:

expose base classes first (for inheritance and if your class returns another class). for example:
class a returns class b ptr, but class b was defined after class a. in this case i seem to get a compile error. in the v2 branch, you have to make sure your class ptr to expose has the base class:

class MyClass : public qjs::enable_shared_from_this<MyClass>

however, I guess this is incomplete (as theres a todo comment on this class) and I have to do a hack to get my existing native ptr exposed to quickjs:

  this->nativeObject.shared_this.ctx = qjsCtx.ctx;
  this->nativeObject.shared_this.reset<NativeObjectClass>(&this->nativeObject);

then it all works. without the above hack, the code compiles but acecssing var.nativeObject returns null. I guess this is because in my case I created the native object outside of the script context. I haven't seen any example of how to do this properly in the code for v2. Previously in v1 itd just work aslong as the class was defined.

@ftk any thoughts here would be appreciated

from quickjspp.

projectitis avatar projectitis commented on June 27, 2024

Coming back to this after some time. ok, more than some time!

I'm not able to make any/all of my classes inherit from qjs::enable_shared_from_this<T>. This is because the classes are not exclusive to quickjs. They are used natively (c++) in some projects, and are exposed to quickjs in others.

Is there a way around this?

from quickjspp.

luodaoyi avatar luodaoyi commented on June 27, 2024

@projectitis I'm like you, is there any solution?

from quickjspp.

projectitis avatar projectitis commented on June 27, 2024

@luodaoyi I haven't found one yet. Have paused this project for now :(

from quickjspp.

luodaoyi avatar luodaoyi commented on June 27, 2024

@projectitis Me too , I have to change script solution to others :(

I think it is unsolvable. Because the js engine needs to manage the life cycle of objects.

from quickjspp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.