Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class A
- {
- public:
- A(){pAImpl = new AImpl;};
- void foo(){pAImpl->foo();};
- private:
- AImpl* pAImpl;
- };
- class AImpl
- {
- public:
- void foo(){/*do something*/};
- };
- class B : public A
- {
- public:
- void bar(){pAImpl->bar();}; // Can't do! pAimpl is A's private.
- };
- class BImpl : public AImpl
- {
- public:
- void bar(){/*do something else*/};
- };
- AImpl * const pimpl
- class A
- {
- public:
- A(bool DoNew = true){
- if(DoNew)
- pAImpl = new AImpl;
- };
- void foo(){pAImpl->foo();};
- protected:
- void SetpAImpl(AImpl* pImpl) {pAImpl = pImpl;};
- private:
- AImpl* pAImpl;
- };
- class AImpl
- {
- public:
- void foo(){/*do something*/};
- };
- class B : public A
- {
- public:
- B() : A(false){
- pBImpl = new BImpl;
- SetpAImpl(pBImpl);
- };
- void bar(){pBImpl->bar();};
- private:
- BImpl* pBImpl;
- };
- class BImpl : public AImpl
- {
- public:
- void bar(){/*do something else*/};
- };
Add Comment
Please, Sign In to add comment