我正在使用boost :: enable_shared_from_this模板在两个类之间创建一个mixin。所以我在这个类中添加了一个新功能:
class MyOldClass :
public Connection,
public boost::enable_shared_from_this<MyOldClass>
{ ... };
之前我使用过普通类(不是QtObject,只是一个C ++普通类),并且一切正常。
但现在我正在使用QMainWindow做同样的事情,它基本上崩溃了:
class MainWindow :
public QMainWindow,
public Connection,
public boost::enable_shared_from_this<MainWindow>
{ Q_OBJECT ... };
使用QObject可能有任何问题吗?不知道为什么会这样。
谢谢。
答案 0 :(得分:2)
您在评论中提到,在致电shared_ptr
之前,您没有创建shared_from_this()
。但这就是问题所在。 x.shared_from_this()
仅在shared_ptr
到x
存在时才有效。如果你从不创建一个,那么你违反了shared_from_this()
的前提条件,所以你的程序有不确定的行为。
shared_from_this()
仅用于检索与现有共享指针共享所有权的指针;它不能用于创建第一个。
答案 1 :(得分:1)
好的伙计们,这是我的错,但答案可能对某人有所帮助:
谢谢