Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <memory>
- class Cimpl;
- class Cpimpl {
- std::auto_ptr<Cimpl> impl;
- public:
- Cpimpl();
- };
- #include "classes.h"
- #include <stdio.h>
- class Cimpl {
- public:
- Cimpl() {
- printf("Cimpl::Cimpl()n");
- }
- ~Cimpl() {
- printf("Cimpl::~Cimpl()n");
- }
- };
- Cpimpl::Cpimpl() {
- this->impl.reset(new Cimpl);
- }
- #include "classes.h"
- int main() {
- Cpimpl c;
- return 0;
- }
- g++ -Wall -c main.cpp
- g++ -Wall -c classes.cpp
- g++ -Wall main.o classes.o -o app_bug
- g++ -Wall classes.o main.o -o app_ok
- struct Cimpl;
- struct Cpimpl
- {
- Cpimpl();
- ~Cpimpl();
- // other public methods here
- private:
- Cimpl *ptr;
- // Cpimpl must be uncopyable or else make these copy the Cimpl
- Cpimpl(const Cpimpl&);
- Cpimpl& operator=(const Cpimpl&);
- };
- #include <stdio.h>
- struct Cimpl
- {
- Cimpl()
- {
- puts("Cimpl::Cimpl()");
- }
- ~Cimpl()
- {
- puts("Cimpl::~Cimpl()");
- }
- // etc
- };
- Cpimpl::Cpimpl() : ptr(new Cimpl) {}
- Cpimpl::~Cpimpl() { delete ptr; }
- // etc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement