我想在C++成员函数周围创建一个包装器,它在调用实际的成员函数之前执行一些额外的任务。我正在使用Emscripten,我下面的例子是使用.function function。
假设我有一个名为SomeClass的类(我并不“拥有”它,即它来自第三方库),它只有一个静态成员函数:
class SomeClass {
public:
void test(int& number) {
number++;
}
};通常,我会使用Embind创建Emscripten绑定,如下所示:
class_<SomeClass>("SomeClass")
.function("test",
&SomeClass::test
)
;但是,我想在该方法周围使用一个包装器,比如(C++ - JS -伪代码)
class_<SomeClass>("SomeClass")
.function("test",
&((this) => {
int i = 0;
this->test(i);
})
)
;这有没有可能呢?任何帮助都将不胜感激!
发布于 2021-06-14 00:52:05
我想通了。Emscripten似乎在设计时就考虑到了这样的用例,并提供了一个specialization of the RegisterClassMethod struct for std::function。
使用下面的代码,我可以实现我想要做的事情。
class_<SomeClass>("SomeClass")
.function("test", std::function<void(SomeClass&)>([](SomeClass& s) {
int i = 0;
s.test(i);
}))
;https://stackoverflow.com/questions/67958985
复制相似问题