1

今日、Chaiscript で非常に奇妙な課題に遭遇しました。理解が不足していると確信していますが、まだ解決できていません。lefticus や他の人がそれに光を当ててくれることを願っています。

私のC++クラスが「const char *」を返すと、そのメソッドを呼び出すと、文字列の最初の文字のみが返されます。

「teststring」は「t」などを返します。

class Item{
     const char *getName();
};
chai.add(chaiscript::fun(&Item::getName), "getName");

...

chai.eval("var i = Item(); print(i.getName());");

...

"t"

メソッドの戻り値の型をより適切に ChaiScript に伝えて、char * のように扱う方法はありますか? おそらくそれはサポートされていないため、std::strings を使用するようにこれらのメソッドを書き直す必要があります。

ありがとう!

4

1 に答える 1

2

charChaiScript が (安全に) 個人へのポインタと null の文字列へのポインタの違いを知る方法はありませんchar。どちらも有効な可能性です。そのため、C++ コア ガイドラインでは、 a は単一のオプション項目のみ*を示す必要があると述べています。

ChaiScript で作業するときの最善の策は、ChaiScript で結果の値を内部的に使用できるようにする場合、std::stringまたはを返すことconst std::string &です。

于 2016-10-09T22:29:57.007 に答える