2016-10-07 6 views
1

今日はChaiscriptで非常に奇妙なチャレンジに走っていますが、私はそれが理解不足であると確信していますが、まだ解決できませんでした。ホープの左翼や他の人たちは、その上にいくつかの光を当てることができます。chaiscriptを使用してconst char *を文字列値として返すための推奨事項はありますか?

私の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" 

より良いので、それはchar *型のように扱うということChaiScript私のメソッドの戻り値の型を指示する方法はありますか?多分それはちょうどサポートされていないと私はstd :: stringsを使用するためにそれらのメソッドを書き直す必要があります..どんな勧告も素晴らしいでしょう。

ありがとうございます!

答えて

2

個別のポインタcharへのポインタとnullの文字列へのポインタとの違いを(安全に)ChaiScriptが知る方法はありません。どちらも有効な可能性があります。そのため、C++コアガイドラインでは、*single, optional item onlyを示す必要があります。

ChaiScriptで内部的に結果値を使用できるようにするには、ちょうどstd::stringまたはconst std::string &を返してください。

+0

ええ、それは私がやったことです。 C++のコアガイドライン.. doh! – OldSchool

関連する問題