0

QExplicitlySharedPointer使用和继承类的最佳方式是什么。我希望当 BaseClass 自己退出时有一个 my d 指针QExplicitlySharedPointer<BaseClassPrivate>,当我在这个基类之上有一个 Derived 类时,我希望 d 是一个QExplicitlySharedPointer<DerivedClassPrivate>.

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

4

1 回答 1

2

那这个呢:

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(); }
};
于 2010-04-22T23:14:34.490 回答