【发布时间】:2015-10-22 17:08:45
【问题描述】:
我正在尝试通过以下方式使用智能指针类
class A
{
friend class B;
virtual methods ();
protected:
virtual ~classA();
}
class B:public QSharedPointer<class A>
{
class B();
~ class B();
}
我打算将出现的 A* 类替换为 B 类。这种方法正确吗?
【问题讨论】:
-
为什么继承自QSharedPointer?这对我来说没有任何意义。没有可重新实现的虚拟方法(这使得继承毫无意义),也没有虚拟 dtor(这使得它很危险)。为什么不直接使用 QSharedPointer?如果您想要一个更好的名称,请使用 typedef。
-
我要确保B类可以访问A类的受保护析构函数,并在引用计数归零时删除
-
但是 B 不是继承自 A,而是继承自 QSharedPointer,因此您无法访问 A 的受保护成员。只需将 dtor 公开即可。 refcount 不是你必须实现的,它为你做 QSharedPointer。
标签: c++ qt qsharedpointer