如何访问脚本中定义的类型的成员?

时间:2015-12-20 07:56:52

标签: c++ chaiscript

我试图从脚本中定义的类型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()是真的。 我显然做错了什么,但我找不到自己的错误 或者可能不打算以这种方式使用?

1 个答案:

答案 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