1

我想将 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++ 对象?

4

0 回答 0