使用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(); }
};