我正在尝试通过以下方式使用智能指针类
class A
{
friend class B;
virtual methods ();
protected:
virtual ~classA();
}
class B:public QSharedPointer<class A>
{
class B();
~ class B();
}
我计划将出现的 A* 类替换为 B 类。这种方法正确吗?
我正在尝试通过以下方式使用智能指针类
class A
{
friend class B;
virtual methods ();
protected:
virtual ~classA();
}
class B:public QSharedPointer<class A>
{
class B();
~ class B();
}
我计划将出现的 A* 类替换为 B 类。这种方法正确吗?
不,这不是真正的方法。看起来您的设计目标是使某人无法分配 A 类型的对象而不将其放入智能指针中。执行此操作的正常方法不是从智能指针继承,而是让您的类型具有
这是一个使用 boost::shared_ptr 的示例(我现在没有安装 QT,但您应该能够将 boost::shared_ptr 的所有实例替换为 QSharedPointer)
#include <boost/shared_ptr.hpp>
class A {
private:
A() {}
~A() {}
struct deleter {
void operator()(A* val) {delete val;}
};
friend class deleter;
public:
static boost::shared_ptr<A> create() {
return boost::shared_ptr<A>(new A(), A::deleter());
}
};
int main()
{
//A a1; //compile error
//A *a2 = new A(); //compile error
boost::shared_ptr<A> a3 = A::create();
return 0;
}