-1

我正在将一个类绑定到松鼠,我遇到了一个我不知道如何解决的问题。该类有一个函数,该函数将另一个类作为参数。当我选择不绑定它编译的特定函数时,但当我这样做时,它会引发错误。

课程:

class A
{
    public:
        A(int foo) : m_foo(foo) {}

    private:
        int m_foo;
}

class B
{
    public:
        void bar(A foo) { /* Do Stuff with foo */ }
}

绑定

Sqrat::RootTable().Bind("A", Sqrat::Class<A>());

Sqrat::RootTable().Bind("B", Sqrat::Class<B>())
    .Func("bar", &B::bar);
);

用作参数的类已经与 Sqrat 绑定到 squirrel,没有任何问题,但是 Sqrat 似乎仍然无法识别它是什么类型。关于为什么会发生这种情况的任何想法?

4

1 回答 1

1

问题是函数中的参数需要作为引用传递,如下所示:

class B
{
    public:
        void bar(A &foo) { /* Do Stuff with foo */ }
}

这是一个问题的原因是因为作为参数传递的对象在其构造函数中需要一个参数。Sqrat 在从参数复制值之前尝试创建类的实例。使参数成为对对象的引用阻止了 Sqrat 尝试实例化不带参数的无效对象。

于 2014-07-01T14:14:15.477 回答