2010-04-22 116 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