2010-04-22 98 views
0

什么是使用QExplicitlySharedPointer和继承类的最佳方式。我希望当BaseClass自己退出时让我的d指针为QExplicitlySharedPointer<BaseClassPrivate>,并且当我在这个基类的顶部有一个派生类时,我希望d是QExplicitlySharedPointer<DerivedClassPrivate>QExplicitlySharedPointer和继承

我试着从BaseClassPrivate继承DerivedClassPrivate,然后让d指针受到保护,并在我的派生类中重新定义d指针,但是现在好像我有两个d指针副本都是局部的他们被定义在...这不是我想要的。

回答

2

这个怎么样:

template< typename P = BaseClassPrivate > 
class BaseClass 
{ 
public: 
    void myBaseFunc() { d->myBaseFunc(); } 
protected: 
    QExplicitlySharedDataPointer<P> d; 
}; 

class DerivedClass : public BaseClass<DerivedClassPrivate> 
{ 
public: 
    void myDerivedFunc() { d->myDerivedFunc(); } 
}; 
+0

有趣,我可以给一个尝试。 – 2010-04-26 15:11:58