C++ QExplicitlySharedPointer和继承

C++ QExplicitlySharedPointer和继承,c++,qt,qt4,d-pointer,C++,Qt,Qt4,D Pointer,使用QExplicitlySharedPointer和继承类的最佳方法是什么。我希望当基类自己退出时,我的d指针是QExplicitlySharedPointer,当我在这个基类上有一个派生类时,我希望d是QExplicitlySharedPointer 我尝试使DerivedClassPrivate从BaseClassPrivate继承,然后使d指针受到保护,并在派生类中重新定义d指针,但现在看来,我有两个d指针副本,它们都位于它们在中定义的类的本地。。。这不是我想要的。这个呢: templa

使用
QExplicitlySharedPointer
和继承类的最佳方法是什么。我希望当基类自己退出时,我的d指针是
QExplicitlySharedPointer
,当我在这个基类上有一个派生类时,我希望d是
QExplicitlySharedPointer

我尝试使DerivedClassPrivate从BaseClassPrivate继承,然后使d指针受到保护,并在派生类中重新定义d指针,但现在看来,我有两个d指针副本,它们都位于它们在中定义的类的本地。。。这不是我想要的。

这个呢:

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(); }
};
template
类基类
{
公众:
void myBaseFunc(){d->myBaseFunc();}
受保护的:
qe明确共享数据指针

d; }; 类DerivedClass:公共基类 { 公众: void myDerivedFunc(){d->myDerivedFunc();} };


很有趣,我可以试一试。