C++ Angelscript类方法注册

C++ Angelscript类方法注册,c++,function,scripting,registering,C++,Function,Scripting,Registering,我正在写一些基本的代码来试验Angelscript,但是我甚至不能让最简单的函数正常工作。以下是基本代码块: class Engine { public: void print(std::string&); }; Engine::print(std::string &msg) { cout<<msg.c_str()<<endl; } 类引擎{ 公众: 无效打印(标准::字符串&); }; 引擎::打印(标准::字符串和消息

我正在写一些基本的代码来试验Angelscript,但是我甚至不能让最简单的函数正常工作。以下是基本代码块:

class Engine {
    public:
       void print(std::string&);
};

Engine::print(std::string &msg)
{
    cout<<msg.c_str()<<endl;
}
类引擎{
公众:
无效打印(标准::字符串&);
};
引擎::打印(标准::字符串和消息)
{

coutas_OBJ_APP_CLASS_构造函数的标志不正确,应将其与其他as_OBJ_APP…标志结合使用。请检查此标志,例如(位过时),并说明注册对象类型的方法:

当然,手册是您最好的朋友: (使用Angelscript->注册应用程序接口->注册对象类型)

int r;

asIScriptEngine *engine = asCreateScriptEngine(ANGELSCRIPT_VERSION);

r = engine->SetMessageCallback(asMETHOD(Engine,MessageCallback), this,asCALL_THISCALL);
assert( r >= 0 );

RegisterStdString(engine);

r = engine->RegisterObjectType("Engine", 0, asOBJ_APP_CLASS_CONSTRUCTOR);
cout<<"r was: "<<r<<endl;
assert( r >= 0 );

r = engine->RegisterObjectMethod("Engine","void print(const string &in)", asMETHOD(Engine,print), asCALL_THISCALL);
assert( r >= 0 );