gpt4 book ai didi

c++ - 为什么 QObjectIterator::get_value_ref() 没有在我的 QtLua 源代码分发中实现?

转载 作者:行者123 更新时间:2023-11-30 04:31:09 24 4
gpt4 key购买 nike

我正在尝试在我的 Windows 机器上为 Qt 4.7.4 构建 QtLua 模块,并且我已经使用适当的 include/lib 路径和编译器/链接器设置设置了所有项目(感谢 cmake)。但是现在我遇到了一个问题,因为位于 qtluaobjectiterator.cc 的第 145 行的 ValueRef QObjectIterator::get_value_ref() 似乎缺少实现,所以库无法构建。我真的不知道该怎么办,我尝试返回一个默认值,但没有 ValueRef 的默认构造函数。这就是函数源文件中的全部内容:

ValueRef QObjectIterator::get_value_ref()
{
// Not used from lua script
std::abort();
}

另外一个功能似乎也没有实现。或者至少没有实现为在 MSVC2010 中可构建,我实际上不知道 gcc 是否可以处理函数不返回它们应该返回的值,但我非常怀疑。 qtluaenumiterator.cc 第 58 行

ValueRef EnumIterator::get_value_ref()
{
abort();
}

信息:

  • Windows 7 x64 旗舰版
  • Visual Studio 2010 终极版(带 MSVC10)
  • luaforwindows v5.1.4-45
  • QtLua v1.3
  • QtSDK 4.7.4
  • CMake 2.8.6

我通过谷歌搜索找到了几乎 0 个关于这个主题的项目(1 个是俄语的,所以我不知道它是否有帮助)

最佳答案

当对象是 QObjectIterator 或 EnumIterator 时,这些从基类重新实现的虚函数永远不会被调用。无法从此类迭代器构建 ValueRef,因为 Qt 元数据不可修改。对这些函数之一的调用将表明存在错误,因此在这里调用 std::abort 是公平的。

此外,gcc 知道 std::abort 函数永远不会返回,因此它不需要这些函数在调用 abort 后返回值。

关于c++ - 为什么 QObjectIterator::get_value_ref() 没有在我的 QtLua 源代码分发中实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8366141/

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