[英]QExplicitlySharedPointer and inheritance
使用QExplicitlySharedPointer
和继承的类的最佳方法是什么。 我QExplicitlySharedPointer<BaseClassPrivate>
独自退出时,让我的d指针成为QExplicitlySharedPointer<BaseClassPrivate>
而当我在此基类之上拥有Derived类时,我希望成为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(); }
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.