私はAngelscriptを試すための基本的なコードを書いていますが、最も単純な関数を正しく動作させることはできません。ここで基本コードブロックである:Angelscriptクラスメソッドの登録
class Engine {
public:
void print(std::string&);
};
Engine::print(std::string &msg)
{
cout<<msg.c_str()<<endl;
}
ここで初期化し、AngelscriptためのC関数を登録し、実際のコードである:
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);
本「)(RegisterObjectType」I機能を持っていなかった最初に、そのプログラムを実行すると、有効なクラスであっても、「 'エンジンは有効な型ではありません」というエラーがスローされます。だから私は "RegisterObjectType()"と呼ばれる関数を発見し、上記のように実装し、今は "RegisterObjectType()"関数の最後のフィールドで "無効なフラグ"エラーを投げている。私はすべてのクラスのフラグを試して、それでもこのエラーをスローします。
Angelscriptにクラスメソッドを登録する適切な方法は何ですか?ドキュメンテーションの例は機能していないようです。これは説明している実際の関数を除いてすべてを切り捨てているようです。たとえば、クラスメソッド登録コードでオブジェクト型を登録することについてのヒントはありませんでした。それについてはそれほど明確ではありませんでした。
すべてのエラーは、アンゼルススクリプトライブラリによってスローされた実行時エラーであり、コンパイラエラーではありません。
ありがとうございます!