Listing 2: Using DynObj.
// Foo.hh
class Bar;
class Foo {
public:
Foo();
void doSomething() const;
void getBar(DynObj<Bar>&);
private:
DynObj<Bar> _bar;
};
// Foo.cc
#include "Foo.hh"
#include "Bar.hh"
Foo::Foo(): _bar(new Bar) {}
void Foo::doSomething() const { _bar().constMethod(); }
void Foo::getBar(DynObj<Bar>& bar) {_bar.giveAway(bar);}
// Bar.hh
class Bar {
public:
Bar() {}
void constMethod() const {}
};
// main.cc
int main() {
Foo foo;
foo.doSomething();
DynObj<Bar> bar;
foo.getBar(bar);
bar().constMethod();
}