QExplicitlySharedPointer

QExplicitlySharedPointer

使用QExplicitlySharedPointer和继承的类的最佳方法是什么。我想当BaseClass独自退出时,将d指针设为QExplicitlySharedPointer<BaseClassPrivate>,而当我在此基类之上具有Derived类时,我希望将d设为QExplicitlySharedPointer<DerivedClassPrivate>

我尝试使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(); }
};

09-28 00:11