现因项目需求,需要将c++中的虚基类提供给上层ArkTS,但教程中所有函数公开,只能定义为static成员函数 而不能定义为virtual或普通成员函数,请告知如何将 irtual函数导致到ArkTS中使用。
现因项目需求,需要将c++中的虚基类提供给上层ArkTS,但教程中所有函数公开,只能定义为static成员函数 而不能定义为virtual或普通成员函数,请告知如何将 irtual函数导致到ArkTS中使用。
1 回答1k 阅读✓ 已解决
1 回答1.3k 阅读
1 回答1.1k 阅读
1 回答1.1k 阅读
1 回答1.1k 阅读
1 回答966 阅读
1 回答937 阅读
ArkTS调用C++类中的成员函数,其中成员函数分为普通函数和静态成员函数,区别是普通成员函数需要创建一个JS实例与C++实例绑定,而静态函数不需要。
在C++中定义一个类:
为这个类绑定构造函数:
这个C++类将与JS侧的类绑定,在JS侧的类创建时,这个C++的构建函数也将调用。
为类中普通函数Add()提供js侧接口:
为类中静态函数StaticAdd()提供js侧接口:
通过对比可以发现普通函数,需要绑定一个C++类的实例,而静态函数不需要。
在init函数中暴露C++的类和类中的函数,并引入JS侧对应要绑定的类:
在index.d.ts中导出AddClass:
在ArkTS侧调用native侧类函数:
通过对比可以发现,类中的普通函数需要创建一个js类实例并通过绑定来调用C++类的构造函数来在native侧创建一个对应C++类,在调用类函数时通过类实例来调用。而static函数就不需要创建JS类实例和C++实例,可以直接调用。