我试图从脚本中定义的类型C ++文件成员访问。问题是Boxed_Value::get_attr
总是返回一个空值。
这是我的C ++文件:
#include <chaiscript/chaiscript.hpp>
#include <iostream>
int main()
{
chaiscript::ChaiScript chai;
chaiscript::Boxed_Value test_value = chai.eval_file("script.chai");
chaiscript::Boxed_Value number = test_value.get_attr("number");
std::cout << chaiscript::boxed_cast<int>(number) << std::endl;
}
script.chai :
class MyType
{
attr number
def MyType
{
this.number = 30
}
}
MyType()
我希望它打印 30 ,但它会抛出bad_boxed_cast
例外。在我投资期间,我发现number.is_null()
是真的。
我显然做错了什么,但我找不到自己的错误
或者可能不打算以这种方式使用?
答案 0 :(得分:1)
不是答案,但我添加了一堆调试;
chaiscript::Boxed_Value test_value = chai.eval_file("script.chai");
auto info = test_value.get_type_info();
printf("%d\n", info.is_const());
printf("%d\n", info.is_reference());
printf("%d\n", info.is_void());
printf("%d\n", info.is_arithmetic());
printf("%d\n", info.is_undef());
printf("%d\n", info.is_pointer());
printf("%s\n", info.name().c_str());
printf("%s\n", info.bare_name().c_str());
得到了:
0
0
0
0
0
0
N10chaiscript8dispatch14Dynamic_ObjectE
N10chaiscript8dispatch14Dynamic_ObjectE