如何使用LuaBridge将{C ++对象转移到lua脚本

时间:2015-06-27 17:55:53

标签: luabridge

我想将lua脚本语言与我的序列化库集成在一起,代码如下:

void cSerializableLua::ThisToLua( lua_State* l, bool classDeclaration )
{
    if( classDeclaration )
    {
        getGlobalNamespace( l )
        .beginNamespace( "CLASS" )
            .beginClass<Property>( "Property" )
                .addProperty( "Number",   &Property::GetNumber, &Property::SetNumber )
                .addProperty( "String",   &Property::GetString, &Property::SetString )
                .addProperty( "Real"  ,   &Property::GetReal,   &Property::SetReal   )
            .endClass()
        .endNamespace();
    }

    for( iterator it = this->begin(); it != this->end(); ++it )
    {
        Property* iser = *it;

        std::string namespaceLUAName = iser->Path(false);
        std::string objectLUAName    = iser->Name();

        getGlobalNamespace( l )
        .beginNamespace( namespaceLUAName.c_str() )
            .addVariable( objectLUAName.c_str() , iser)
        .endNamespace();
    }

    for( cChildList::iterator it = this->ChildList()->begin(); it != this->ChildList()->end(); ++it )
    {
        cSerializableLua* iser = *it;
        if(iser) { iser->ThisToLua( l, false ); }
    }
}

不幸的是,LuaBridge正在创建我的“类属性”对象的副本,所以我在脚本中做的每个更改都是如此:

VSPThread.STADDR.String = "http://87.239.46.3/mjpg/video.mjpg"
VSPThread.WIDTH.Number = 640
VSPThread.HEIGHT.Number = 480
VSPThread.ENABLE.Number = 1

不要更改我的c ++生命周期对象。

我的问题是,我如何强制LuaBridge将更改的数据复制回我的c ++对象?

0 个答案:

没有答案