0

想象一下,我在 C++ 中有以下可变参数类:

template<typename... Ts>
class IFoo {
    virtual bar(Ts... values) = 0;
};

我想在 JavaScript 中实现这个类。为此,我必须创建一个包装器。

template<typename... Ts>
struct FooWrapper : public emscripten::wrapper<IFoo<Ts...>> {
    EMSCRIPTEN_WRAPPER(FooWrapper);

    // Implement the class' functions.
}

这会导致错误:

error: member initializer 'wrapper' does not name a non-static data member or base class
            FooWrapper(val &&v, Args &&... args) : wrapper(std::forward<val>(v), std::forward<Args>(args)...) {

我可以通过传入一个具体类型来解决这个问题,而不是FooWrapper作为一个模板。

struct FooWrapper_String_Bool : public emscripten::wrapper<IFoo<std::string, bool>> {
    EMSCRIPTEN_WRAPPER(FooWrapper_String_Bool);

    // Implement the class' functions.
}

但这需要我为实例化的每个可能值创建一个新结构IFoo

有没有人有更好的方法来做到这一点?

4

0 回答 0