【问题标题】:Additional functions added to a class cause a segfault when class is created as a shared_ptr当类创建为 shared_ptr 时,添加到类的附加函数会导致段错误
【发布时间】:2017-09-04 16:51:26
【问题描述】:

这真的把我难住了。

我们有一个定义了十几个 getter 和 setter 的类,它们为各种成员变量采用混合类型(QString、int、bool)。我目前正在为一些额外的数据添加一组新的函数和变量,一切都很好,但是当我运行代码并创建该类的一个新实例作为boost::shared_ptr,然后我立即在@987654322 中得到一个段错误@。

我也可以更进一步,如果我只添加 getter 和变量,它将不再出现段错误。如果我将变量更改为 bool 而不是 QString,它会起作用,但是如果我更改为 std::string 它仍然会在同一个地方出现段错误,这更加奇怪,因为变量不再是 Qt 的.如果我创建一个新的类实例而不是boost::shared_ptr,那很好,完全没有问题。这些函数尚未在类内部或外部使用。

【问题讨论】:

  • 您是否尝试重新运行 qmake?还是重建整个项目?可能是您添加了一些标头并且 qmake 没有更新依赖项。链接它们时似乎不兼容的编译单元。
  • 我已经尝试过 clean-rebuild 路线,因为我认为这可能是一些奇怪的编译问题。
  • 能贴出代码吗?
  • 原来垃圾目录并重新检查新代码实际上解决了它,所以我猜ant clean没有垃圾。

标签: c++ linux qt shared-ptr


【解决方案1】:

我也遇到过类似的问题。

我只是在一个类中创建一个变量,当尝试使用时导致分段错误,我快疯了!

我的环境类似:一个在Linux上使用Qt的软件,用C++语言编写。

所以我清理了项目并重建,然后工作正常!

StackOverflow 保存!

【讨论】:

    【解决方案2】:

    删除目录并重新提取代码,重新构建并且它可以工作。我不知道为什么,我猜清理过程没有正确清理掉一些东西。

    【讨论】:

      猜你喜欢
      • 2018-07-03
      • 1970-01-01
      • 2016-08-11
      • 2021-06-02
      • 2021-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多