在LuaBridge中注册带有char* 作为参数的函数,会导致运行时的断言错误,例程如下:
class A
{
protected:
char* newname;
public:
A(char* _name)
{
newname = _name;
}
std::string getName()
{
return this->name;
}
void printName()
{
printf("Hello, my name is %s!\n", this->newname);
}
};
注册代码如下
luabridge::getGlobalNamespace(L)
.beginClass<A>("A")
.addConstructor<void(*) (char *)>()
.addFunction("getName", &A::getName)
.addFunction("printName", &A::printName)
.endClass();
在lua中的调用如下
local b = A('moo')
b:printName()
然后运行时就会出现错误"assertion failed",如图所示
此问题不仅出现在注册类的构造函数上,实际上,任何的试图注册带有char*类型的函数都会导致此错误,比如下面的代码
void UpdateMem(char* _mem)
{
...
// manipulate the memory
}
请问有没有人遇见过这类问题,这样该如何解决传入指针,操作内存区的问题啊?
多谢!!