QExplicitlySharedPointer и наследование - PullRequest
0 голосов
/ 22 апреля 2010

Как лучше всего использовать QExplicitlySharedPointer и унаследованные классы. Я хотел бы, чтобы когда BaseClass выходил сам по себе, указатель d был бы QExplicitlySharedPointer<BaseClassPrivate>, а когда у меня есть класс Derived поверх этого базового класса, я бы хотел, чтобы d было QExplicitlySharedPointer<DerivedClassPrivate>.

Я попытался заставить DerivedClassPrivate наследовать от BaseClassPrivate, а затем сделать защищенный указатель d и заново определить d-указатель в моем производном классе, но теперь кажется, что у меня есть две копии d-указателя, оба локальные для класса они определены в ... это не то, что я хочу.

1 Ответ

2 голосов
/ 23 апреля 2010

Что по этому поводу:

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(); }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...