2010-04-22 2 views
0

QExplicitlySharedPointer 및 상속 된 클래스를 사용하는 가장 좋은 방법은 무엇입니까? BaseClass가 종료 될 때 자신의 포인터가 QExplicitlySharedPointer<BaseClassPrivate>이고이 기본 클래스의 최상위에 파생 된 클래스가있을 경우 QExplicitlySharedPointer<DerivedClassPrivate>이 필요합니다.QExplicitlySharedPointer 및 상속

DerivedClassPrivate를 BaseClassPrivate에서 상속 한 다음 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

, 나는 시도 것을 제공 할 수 있습니다. –