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();}
};
很有趣,我可以试一试。