Рекомендации по возврату const char * в виде строкового значения с использованием chaiscript?

Столкнувшись сегодня с очень странной проблемой с Chaiscript, я уверен, что это недостаток понимания, но я еще не смог ее решить. Надеялся, что левикус или другие смогут пролить на это свет.

Когда мой класс С++ возвращает "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. Любые рекомендации были бы замечательными.

Спасибо!


person OldSchool    schedule 07.10.2016    source источник


Ответы (1)


ChaiScript не может (безопасно) узнать разницу между указателем на отдельный char и указателем на строку char с нулевым завершением. Оба варианта допустимы, поэтому в основных рекомендациях C++ говорится, что * должен обозначать только один необязательный элемент.

Лучше всего при работе с ChaiScript, если вы хотите, чтобы ChaiScript мог использовать значение результата внутри, просто вернуть std::string или const std::string &.

person lefticus    schedule 09.10.2016
comment
Да, примерно так я и сделал. Основные принципы C++.. ох! - person OldSchool; 10.10.2016