gpt4 book ai didi

c++ - 在 Chaiscript 中绑定(bind) C++ native 方法时的继承问题

转载 作者:行者123 更新时间:2023-11-28 08:28:18 25 4
gpt4 key购买 nike

我使用这段代码来验证 ChaiScript 中一组 Qt 对象的一些属性:

    /// initialize the engine
boost::shared_ptr<chaiscript::ChaiScript> chai;
chai.reset(new chaiscript::ChaiScript());
std::cout << "ChaiScript engine created!!!" << std::endl;


///
/// register elements
//
assert(ui->checkBox);
chai->add(chaiscript::var(ui->checkBox), "checkBox");

///
/// adapt elements

/// QCheckBox
chai->add(chaiscript::fun(&QCheckBox::isTristate), "isTristate");
chai->add(chaiscript::fun(&QCheckBox::isChecked), "isChecked");


/// validate some properties
try
{
chai->eval("print(\"Starting evaluation...\")");
int answer_i = 0;
bool answer_b = false;
//answer_b = chai->eval<bool>("checkBox.isTristate()");
answer_b = chai->eval<bool>("checkBox.isChecked()");

std::cout << "ChaiScript::: " << answer_b << " :: " << answer_i << std::endl;
}
catch(std::exception e)
{
std::cout << "ChaiScript@Exception::: " << e.what() << std::endl;
}

问题在于“isTristate()”调用有效,因为这是 QCheckBox 的本地方法。另一方面,“isChecked()”调用失败,我认为是因为这是从 QAbstractButton 类继承的方法。

我做错了什么?

最佳答案

最新的 SVN 版本的 ChaiScript 通过允许用户添加基类关系解决了这个问题。

chai.add(base_class<Base, Derived>());

之后继承的函数调用按预期工作,无需澄清基类方法指针类型,如您的答案所示。

关于c++ - 在 Chaiscript 中绑定(bind) C++ native 方法时的继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3193024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com