c++ - Ruby rb_define_method - 无效转换

标签 c++ ruby qt type-conversion

我在 QT 应用程序中嵌入了 Ruby 并尝试创建类并为其添加新方法

VALUE Base = rb_define_class("Base", NULL);
VALUE Base_Initialize(VALUE self);
rb_define_method(Base, "initialize", Base_Initialize, 0);

编译时出错

invalid conversion from 'VALUE (*)(VALUE) {aka long unsigned int (*)(long unsigned int)}' to 'VALUE (*)(...) {aka long unsigned int (*)(...)}' [-fpermissive]

在 c 扩展中工作正常。

最佳答案

我添加 reinterpret_cast< VALUE ( * ) ( ... ) >(BaseItem_Initialize)它奏效了。

VALUE Base = rb_define_class("Base", NULL);
VALUE Base_Initialize(VALUE self);
rb_define_method(Base, "initialize", reinterpret_cast< VALUE ( * ) ( ... ) >(BaseItem_Initialize), 0);

关于c++ - Ruby rb_define_method - 无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40006334/

相关文章:

ruby-on-rails - 在 ruby​​ 中存储可解密密码的安全方法

sql - 如何仅使用 arel 解决此 sql 语句

c++ - 如何比较并获取两个列表中未包含的值

如果两个模板函数都匹配参数列表,C++ 将调用哪个模板

c++ - 存储可变模板参数并在另一个类中使用它们

ruby - 如何根据其拥有的字段使用 Mechanize 选择表单?

linux - QFontDatabase::addApplicationFont 适用于嵌入式 Linux,但不适用于 Linux Ubuntu

c++ - 我是否需要通知 QTableView QAbstractTableModel 子类中的列数发生了变化?

c++ - QT 甚至在 waitForConnected 运行时进行处理

c++ - 是否有任何中间件/库可以将您的二进制或文本数据从 64 位转换为 32 位?