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