0

私はスクリプト言語 ChaiScript を c++ と Qt で使用しています。私はそのような関数を定義しました:

void ChaiPainter::drawRectangle(QPainter *painter, int x, int y, int height, int width)
{
    painter.drawRect(x, y, width, height);
}

そして、アプリケーションペイントイベントでは:

void MainWindow::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);

    chaiPainter->mChai.add(chaiscript::var(&painter), "painter");
    chaiPainter->mChai.add(chaiscript::fun(&ChaiPainter::drawRectangle), "drawRect");

    chaiPainter->mChai("drawRect(painter, 5, 5, 100, 100)");
}

エラーは次のとおりです。

'chaiscript::Eval_Error' what(): エラー: (1, 1) での評価中に「関数 'drawRect' でディスパッチする一致する関数がありません」

私は何を間違っていますか?

4

1 に答える 1

1

fun(mem_fn, instance)ドキュメントから、フォームを使用して事前にバインドされた関数を取得する必要があるようです。

chaiPainter->mChai.add(
    chaiscript::fun(&ChaiPainter::drawRectangle, chaiPainter), "drawRect");
于 2010-03-23T18:39:23.587 に答える