0

QExplicitlySharedPointer継承されたクラスを使用する最良の方法は何ですか。BaseClass が独自に終了するときに my d ポインターQExplicitlySharedPointer<BaseClassPrivate>を持ち、この基本クラスの上に Derived クラスがあるときに d を a にしたいと思いますQExplicitlySharedPointer<DerivedClassPrivate>

DerivedClassPrivate を BaseClassPrivate から継承させようとした後、d ポインターを保護し、派生クラスで d ポインターを再定義しようとしましたが、定義されているクラスに対してローカルな d ポインターのコピーが 2 つあるようです。で...これは私が望むものではありません。

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 に答える